我创建了我的Yii 2应用程序。在我的数据库中,有一个表用户具有以下字段:firstName
,lastName
,username
和password
,' authKey'。
使用Gii工具我为用户表创建了一个模型。为了实现登录功能,我从IdentityInterface扩展了这个类,并实现了所有方法。这是方法列表:
public static function findIdentityByAccessToken($token, $type = null)
{
throw new NotSupportedException();
}
public static function findIdentity($id)
{
Admin::findOne($id)
}
public function getId()
{
return this->id;
}
public function getAuthKey()
{
return $this->authKey
}
public function validateAuthKey($authKey)
{
return $this->authKey = $authKey;
}
public static function findByUsername($username)
{
return static::find(array('username'=>$username));
}
public function validatePassword($password) {
return $this->password == $password;//Just for demonstration purposes
}
我更改了配置文件(用户组件等于此):
'user' => [
'identityClass' => 'app\models\Admin',
'enableAutoLogin' => true,
],
在LoginController
后面的行
if($model->load(Yii::$app->request->post()) && $model->login()) {
我打印
var_dump(Yii::$app->user->identity);exit;
用户身份属性,并且正常设置了值。只要我将用户重定向到任何其他页面
var_dump(Yii::$app->user->identity); exit;
等于null
。
有人能解释我发生了什么吗?
注意:以下帖子没有帮助:
答案 0 :(得分:0)
发布$ model-> login()的内容。
然后我会在登录后检查会话cookie是否正确设置。
答案 1 :(得分:0)
问题出在findIdentity
方法中,但没有返回任何结果。
它应该是
public static function findIdentity($id)
{
return Admin::findOne($id)
}