和以前一样,请求始终重定向到登录页面,即使对于经过身份验证的用户也是如此



我在 yii2 基本项目中实现身份验证登录操作似乎工作正常

public function actionLogin()
{
    $this->layout = "login-layout"; 
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }
    $model = new LoginForm();
    if ($model->load(Yii::$app->request->post()) && $model->login()) {
        if (Yii::$app->user->isGuest) {
            var_dump("guest"); die();
        } else {
            var_dump("This is user"); die();
        }   
    }
    $model->password = '';
    return $this->render('login', [
        'model' => $model,
    ]);
}

我已经在配置中配置了请求之前.php如下所示

'as beforeRequest' => [
    'class' => 'yiifiltersAccessControl',
    'rules' => [
        [
            'allow' => true,
            'actions' => ['login'],                
        ],
        [
            'allow' => true,               
            'roles' => ['@'],
        ],
    ],
    'denyCallback' => function () {           
            return Yii::$app->response->redirect(['site/login']);               
    },
],

我的问题是即使用户成功通过身份验证,我仍然无法访问其他页面继续重定向到登录页面请帮助我解决这个问题。

经过几个小时的调试,我终于能够解决这个问题。问题是由我的用户模型中的findIdentity方法引起的,因为我正在创建它以返回

null,如下所示
public static function findIdentity($MemberId) {
    $user = self::find();   
     return ;//static($user);
}

所以我把它改成了

public static function findIdentity($MemberId) {
    $user = self::find()->where(['MemberId' => $MemberId])->one();  
     return $user;
}

现在,它工作正常,所以问题不像以前那样在请求,而是应用程序没有找到实际用户。

相关内容

最新更新