和以前一样,请求总是重定向到登录页面,即使对于经过身份验证的用户也是如此
as before request always redirect to login page even for authenticated user
正在 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']);
},
],
我的问题是即使用户已成功通过身份验证我仍然无法访问其他页面继续重定向到登录页面
请帮我解决这个问题。
经过几个小时的调试,我终于解决了这个问题。问题是由我的用户模型中的 findIdentity 方法引起的,因为我将其创建为 return 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;
}
现在,它工作正常,所以问题不在 之前的请求 中,而是应用程序没有找到实际用户。
正在 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']);
},
],
我的问题是即使用户已成功通过身份验证我仍然无法访问其他页面继续重定向到登录页面 请帮我解决这个问题。
经过几个小时的调试,我终于解决了这个问题。问题是由我的用户模型中的 findIdentity 方法引起的,因为我将其创建为 return 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;
}
现在,它工作正常,所以问题不在 之前的请求 中,而是应用程序没有找到实际用户。