为什么Yii2认证在屁股上如此痛苦?
我想限制只有经过身份验证的用户才能访问reinterpreter<T>
控制器的index
操作。我已经下载了基本的应用程序模板。以下是SiteController
的{{1}}方法的代码:
behaviors()
和SiteController
操作:
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['login', 'logout', 'index'],
'rules' => [
[
'allow' => true,
'actions' => ['logout', 'index'],
'roles' => ['@'],
],
[
'allow' => true,
'actions' => ['login'],
'roles' => ['?'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}
用户模型根本没有修改。为什么当我尝试访问index
时,它正确地将我重定向到public function actionIndex()
{
return $this->render('index');
}
,但即使我使用管理员凭据(site/index
/ site/login
登录后),我也会再次重定向到登录页面? WTF在这里错了?有趣的是,我在运行时日志中读到用户管理员已登录,但登录页面再次显示。
答案 0 :(得分:0)
请确保您确实已记录并且您的登录操作正常工作,请确保您在urlManager配置或htaccess中没有重定向,那么您也可以尝试这种方式
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
'actions' => ['login', 'error'],
'allow' => true,
],
[
'actions' => ['logout', 'index'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
],
];
}