自动登录没有用啊! [ 2.0 版本 ]
不是就这样就可以了吗?Yii::$app->user->login($user, $this->rememberMe ? 3600 * 24 * 10 : 0)
我勾选记住登录,名字是_identity
的cookie是有的,这是自动登陆的凭证吧?
我的怎么没用,还要做其他什么操作吗?
我用的就是Yii自带的那套。
user的配置:
'user' => [
'identityClass' => 'common\models\User',
'enableAutoLogin' => true,
'loginUrl' => ['user/login', 'ref' => 1],
'authTimeout' => 1800,
],
User实现的IdentityInterface
接口代码如下:
/**
* 通过user id查找身份
*
* @param user_id $id
* @return Ambigous <\yii\db\static, NULL>
*/
public static function findIdentity($id)
{
return static::findOne ( [
'user_id' => $id,
'enabled' => self::STATE_ENABLED
] );
}
/**
* 用token查找身份,这个方法暂时没有用处
*
* @param string $token
* @param string $type
*/
public static function findIdentityByAccessToken($token, $type = null)
{
return null;
}
/**
* 取得可用用来验证用户身份的KEY,每个用户的key需要唯一
*
* @return string
*/
public function getAuthKey()
{
return null;
}
/**
* 取user id
*
* @return number
*/
public function getId()
{
return $this->user_id;
}
/**
* 验证authKey
*
* @param string $authKey
* @return boolean
*/
public function validateAuthKey($authKey)
{
return $this->getAuthKey () === $authKey;
}
搞定:
$cookie->value = json_encode([
$identity->getId(),
$identity->getAuthKey(),
$duration,
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
最佳答案
-
应用配置里面,对component['user']的配置代码贴一下。
如果是你们自己实现的Identity类,把实现
IdentityInterface
的类代码也需要贴一下。这样才好方便你诊断问题。共 2 条回复strive 觉得很赞
其他 2 个回答
dyllen
注册时间:2014-09-09
最后登录:2020-10-16
在线时长:48小时47分
最后登录:2020-10-16
在线时长:48小时47分
- 粉丝8
- 金钱400
- 威望80
- 积分1680