2016-04-12 7 views
2

へのリダイレクトではなくエラーを返します。私の動作では、actionListは認証されたユーザーのみが閲覧できます。 actionList

$behaviors [ 'access' ] = [ 
    'class' => AccessControl::className(), 
    'rules' => [ 
     [ 
      'actions' => [ 'list' ], 
      'allow' => ['@'], 
     ] 
    ], 
]; 

私はuser_idを取得しています:

public function actionList() { 
    $user_id = \Yii::$app->user->identity->id; 
    return $this->render('list'); 
} 

すべて良いが、ログインしていないときは、このアクションに行けば、エラーが発生します:

PHP Notice – yii\base\ErrorException

Trying to get property of non-object

私はユーザーIDを持っていないので、私はログインしていないが、コードはそれほど遠くに行くのだろうか? $user_id = \Yii::$app->user->identity->id;をコメントアウトすると、予想される動作であるログインページにリダイレクトされます。私は誰かがアクション自体にログインしているかどうかを確認するためにもう一度チェックをしなければならないと思いません。あらかじめbehaviours['access']で処理してはいけませんか?

答えて

2

が、これはallowroles属性を変更してみてください:

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => AccessControl::className(), 
      'rules' => [ 
       [ 
        'actions' => ['list'], 
        'allow' => true, 
        'roles' => ['@'], 
       ], 
      ], // rules 
     ], // access 
    ]; 
} 

詳細情報hereを。

関連する問題