CakePHP 1.3是否可以通过在用户表中指明用户的ID来登录用户?
现在,要进行“手动”登录,我这样做(有效):
$this->data['User']['username'] = username;
$this->data['User']['password'] = password;
$this->Auth->login($this->data);
我希望能够在login()函数之前指明特定用户,例如添加 $ this-> data ['User'] ['user_id'] 。 (我已经尝试过,但它不起作用。)
我之所以这样做是因为在用户表中,有不同用户的用户记录具有相同的用户名和密码。这看起来很奇怪但在我的情况下是有道理的,因为同一个用户可能会因为不同的原因创建多个帐户,并且他可能会选择相同的用户名/密码。
任何想法都会非常感激!
修改
我将给出一个我正在尝试做的具体例子,也许这有助于提出一些想法。
说我在用户表中有这2条记录(字段为 user_id / 用户名 / 密码 / account_id ):
因此,这2条记录具有相同的用户名和密码,但不同的user_id和account_id。处理登录后,我知道用户选择的 account_id 。所以我想登录相应的用户。因此,如果用户选择帐户15,那么日志是,我应该登录id为2的用户。
但是,cake的登录方式有效,它总是会检索与用户名/密码匹配的第一条记录。在此示例中,cake将以id 1登录用户。
有什么方法可以做我想做的事吗?
答案 0 :(得分:0)
对我来说听起来不是一个好主意,但如果你真的想要/必须这样做,那么看看AuthComponent::userScope
。您可以使用它来定义身份验证查找的其他条件,例如:
$this->Auth->userScope = array('User.account_id' => 15);
这样,当用户名和密码匹配且用户account_id
为15
时,身份验证才会成功,即生成的查询看起来像这样
User.username = 'abc' AND User.password = 'xyz' AND User.account_id = 15