как и прежде, запрос всегда перенаправляет на страницу входа даже для аутентифицированного пользователя - PullRequest
0 голосов
/ 05 февраля 2019

Я выполняю аутентификацию в базовом проекте 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,
    ]);
}

Я настроил , как и прежде, запрос в config.php, как показано ниже

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

Моя проблема , даже если пользователь успешно аутентифицирован, но я не могу получить доступ к другим страницам, продолжайте перенаправлять на страницу входа Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 05 февраля 2019

Наконец я смог решить эту проблему после нескольких часов отладки.Проблема была вызвана методом findIdentity в моей модели User, поскольку я создавал его так, чтобы он возвращал значение 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;
}

Теперь все работает нормально, поэтому проблема была не в , как в beforeRequest , вместо этого приложение не находило реального пользователя.

...