1

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

有任何想法吗?这一定是以前做过的,但我找不到任何东西。

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

4

3 回答 3

2

看看我的 Qlogins: http: //www.dereuromark.de/2012/02/08/qlogin-quicklogins-fur-cakephp/

特别是 https://github.com/dereuromark/tools/blob/2.0/Controller/QloginController.php#L57

我根据提供的密钥来做。但是您可以很容易地看到如何通过仅知道 user_id 等来自动登录某人:

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

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

于 2012-06-06T13:22:45.110 回答
0

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

如果它返回真正的重定向或做任何你喜欢的事情。

于 2012-06-06T13:01:18.900 回答
0

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

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

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

于 2012-06-06T14:36:25.167 回答