cakephp用户身份验证
问题描述:
CakePHP 1.3有可能通过在用户表中指示用户ID来登录用户吗?cakephp用户身份验证
现在,做一个“手动”登录,我这样做(工作):
$this->data['User']['username'] = username;
$this->data['User']['password'] = password;
$this->Auth->login($this->data);
我希望能够表明特定的用户,例如添加$这个 - >数据['User'] ['user_id']之前的login()函数。 (我试过,但它不起作用)。
我想这样做的原因是因为在用户表还有谁具有相同的用户名和密码用户不同用户的记录。这似乎很奇怪,但在我的情况下是有道理的,因为同一个用户可能会出于不同的原因创建几个帐户,他可能会选择相同的用户名/密码。
任何想法将不胜感激!
编辑:
我要去给的什么,我试图做一个具体的例子,也许这有助于带来一些想法。
说我有这2条记录在用户表(字段USER_ID/用户名/密码/ACCOUNT_ID):
- 记录1:1 /人johndoe /密码1/10
- 记录2:2 /人johndoe /密码1/15
所以这2重电话线具有相同的用户名和密码,但不同的user_id和account_id。当处理登录时,我知道用户选择了什么account_id。所以我想登录相应的用户。因此,如果用户选择帐户15,那么日志是,我应该以id 2登录用户。
但是,Cake的登录方式,它始终检索匹配用户名/密码的第一条记录。在这个例子中,蛋糕会登录到ID为1的用户。
有什么办法可以做我想做的吗?
答
听起来对我来说不是一个好主意,但如果你真的想/必须这样做,那么看看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
谢谢你的回复。问题是我不确定这是我需要的,因为一旦找到匹配用户名/密码的记录,就可以包含条件。不过,我需要一些可以让我通过其user_id选择记录的东西。我看到我可能需要一个自定义登录功能。我要更新我的问题,以更详细地解释我想要做的事情 – Albert
这听起来仍然像你在找什么。 'userScope'中定义的条件用于检查用户名和密码的相同查询中,这意味着您只会在'account_id = 15'(我已更改示例中的列名)的用户中进行检索。所以通过定义这样一个条件,你可以有效地选择一个特定的用户(假设account_id/username组合是唯一的)。 – ndm
好的谢谢!只要可以肯定,我应该在哪里放置'$ this-> Auth-> userScope = array('User.account_id'=> $ current_account_id);'?它需要在beforeFilter()吗?或者只要在login()动作被调用之前,我可以从不同的动作调用它? – Albert