CakePHP-自动登录用户

CakePHP-自动登录用户,cakephp,authentication,Cakephp,Authentication,如何在不知道用户密码的情况下自动登录用户?我可以从数据库中获取有关用户的任何信息(用户名、ID、电子邮件等),但密码将是数据库中的哈希版本,因此Auth::login()失败,因为密码不是明文版本 有什么想法吗?这一定是以前做过的,但我什么也找不到 据我所知,Cake 1.3过去只允许您提供一个用户ID,它会让他们登录,但Cake 2.x不再支持这一点,那么这是如何做到的呢?请参阅:使用配置的身份验证适配器,并尝试通过$request中包含的凭据来识别用户 如果返回true,则重定向或执行任何您

如何在不知道用户密码的情况下自动登录用户?我可以从数据库中获取有关用户的任何信息(用户名、ID、电子邮件等),但密码将是数据库中的哈希版本,因此Auth::login()失败,因为密码不是明文版本

有什么想法吗?这一定是以前做过的,但我什么也找不到

据我所知,Cake 1.3过去只允许您提供一个用户ID,它会让他们登录,但Cake 2.x不再支持这一点,那么这是如何做到的呢?

请参阅:使用配置的身份验证适配器,并尝试通过$request中包含的凭据来识别用户

如果返回true,则重定向或执行任何您喜欢的操作。

查看我的Qlogins:

特别是

在那里,我根据提供的密钥进行操作。但是,您可以很容易地看到,只要知道用户id等,您就可以自动登录:

if ($this->Auth->login($user['User'])) {}

诀窍是将用户数据传递给该方法。

Cake用来判断用户是否“登录”的所有方法都是通过检查会话。因此,只需填充会话即可

$user = $this->User->read(null, 1);
$this->Session->write('Auth', $user);
debug($this->Auth->loggedIn());

这跳过了身份验证过程,甚至跳过了试图识别它们的过程。但就应用程序而言,现在他们正在进行会话,他们已经登录。

你能详细说明一下如何做到这一点吗?我已经读过这本书了,但它没有真正意义。如何使自定义身份验证处理程序只检查用户ID,然后使用该身份验证处理程序登录?检查该方法,它将CakeRequest和CakeResponse作为参数。只需确保CakeRequest中有用户数据。如果您只想传递一个id,那么您必须编写一个自定义处理程序,对吗。这里详细解释了这一点,仅供参考,这也是我如何在测试用例中“登录”用户的方法。谢谢,这很有效。这是否比尝试创建自定义身份验证处理程序等更不安全?这样做还有其他安全问题吗?不,不应该,除非您将id作为参数公开,并使登录用户的操作可公开访问。那太糟糕了:)好吧。请确保您的id散列是咸的,并且应该没有问题。使用Security::hash()应该意味着我的应用程序会自动使用salt,对吗?