用户id的cakephp认证

时间:2012-12-05 18:13:15

标签: cakephp authentication

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 ):

  • 记录1:1 / johndoe / password1 / 10
  • 记录2:2 / johndoe / password1 / 15

因此,这2条记录具有相同的用户名和密码,但不同的user_id和account_id。处理登录后,我知道用户选择的 account_id 。所以我想登录相应的用户。因此,如果用户选择帐户15,那么日志是,我应该登录id为2的用户。

但是,cake的登录方式有效,它总是会检索与用户名/密码匹配的第一条记录。在此示例中,cake将以id 1登录用户。

有什么方法可以做我想做的事吗?

1 个答案:

答案 0 :(得分:0)

对我来说听起来不是一个好主意,但如果你真的想要/必须这样做,那么看看AuthComponent::userScope。您可以使用它来定义身份验证查找的其他条件,例如:

$this->Auth->userScope = array('User.account_id' => 15);

这样,当用户名和密码匹配且用户account_id15时,身份验证才会成功,即生成的查询看起来像这样

User.username = 'abc' AND User.password = 'xyz' AND User.account_id = 15