2017-09-23 96 views
0

为什么Yii2身份验证如此痛苦的屁股?Yii2登录问题

我想限制SiteController控制器的index操作仅由经过身份验证的用户访问。我已经下载了基本的应用程序模板。下面是的SiteControllerbehaviors()方法的代码:

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,但即使使用管理员凭据(admin/admin)登录后,我又会重定向到登录页面?跆拳道在这里是错的?有趣的是,我在运行时日志中读取了用户管理员已登录,但登录页面再次显示。

回答

0

确保你确实记录和登录操作正常工作,请确保你没有重定向你urlManager CONFI或你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'], 
       ], 
      ], 
     ]; 
    } 
+0

它不工作。 –

+0

我在我的应用程序和工作中使用它..你确定你是正确登录? 。你有没有rediection urlManager或htacces? – scaisEdge

+0

如果我输入了错误的用户名和/或密码,登录表单会显示错误,但不会显示错误。正如我所说的,运行时日志记录了成功的登录,但我仍然重定向到无论如何登录。这是非常令人沮丧的... !!! –