0

在 CakePHP 1.3 中是否可以通过在users表中指示用户的 id 来登录用户?

现在,要进行“手动”登录,我这样做(有效):

$this->data['User']['username'] = username;
$this->data['User']['password'] = password;
$this->Auth->login($this->data);

我希望能够指示特定用户,例如在 login() 函数之前添加$this->data['User']['user_id'] 。(我已经尝试过了,但它不起作用)。

我想这样做的原因是因为在users表中有不同的用户记录,这些用户具有相同的用户名密码。这看起来很奇怪,但在我的情况下是有道理的,因为同一个用户可能会出于不同的原因创建多个帐户,并且他可能会选择相同的用户名/密码。

任何想法将不胜感激!

编辑:

我将给出一个具体的例子来说明我正在尝试做的事情,也许它有助于带来一些想法。

假设我在 users 表中有这 2 条记录(字段是user_id / username / password / 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 登录用户。

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

4

1 回答 1

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
于 2012-12-06T01:38:02.350 回答