Yii2甜饼

Yii2甜饼,yii2,autologin,Yii2,Autologin,我已经像那个家伙一样建立了基于cookie的登录。我可以看到auth密钥总是正确生成的。我可以在数据库和cookie中看到它。Cookie也有正确的过期日期。然而,我从未自动登录。我已经将'enableAutoLogin'=>设置为true,所有其他方法都是默认的。所以它应该会起作用。我在某个地方读到,调用Yii::$app->user->identity应该触发cookie登录,但事实并非如此。有什么建议吗?您是否设置了登录方法的持续时间? 方法具有名为“duration”的第二个参数。默认情

我已经像那个家伙一样建立了基于cookie的登录。我可以看到auth密钥总是正确生成的。我可以在数据库和cookie中看到它。Cookie也有正确的过期日期。然而,我从未自动登录。我已经将
'enableAutoLogin'=>设置为true
,所有其他方法都是默认的。所以它应该会起作用。我在某个地方读到,调用
Yii::$app->user->identity
应该触发cookie登录,但事实并非如此。有什么建议吗?

您是否设置了登录方法的持续时间?
方法具有名为“duration”的第二个参数。默认情况下,它是
0
。这意味着只要会话保持活动状态,身份信息就会存储在会话中。如果要自动登录,请将持续时间设置为>0。

此问题可能是由从cookie检索的数据引起的。User::findIdentity中的$id参数不是MongoId或字符串,而是数组。最简单的解决方案是覆盖该方法,例如:

public static function findIdentity($id)
{
if(!empty($id) && is_array($id))
$id = new \MongoId($id['$id']);
return static::findOne($id);
}

是的,正如我在最初的问题中所说,持续时间是有定义的。您可以清楚地看到,在cookie中,cookie过期日期正是我在配置中使用的持续时间。@jeesus您可以显示完整的代码(操作和模型)吗?可能在githus gist上。这是我的用户模型:这是我的LoginForm模型:这是我的SiteController:@jeesus您不应该手动调用controller中的loginByCookie()。当您尝试获取用户身份时,它称为Automaticali。对于示例yii2应用程序。没有对loginByCookie()的调用。我只是添加了它,因为没有它就无法工作。而且它没有用。所以我有麻烦了。还有其他想法吗?事实上现在问题已经解决了。我已经设置了一个自定义的
$identityCookie
,由于某种原因,自动登录功能在设置时无法工作。移除它为我解决了问题。