2016-04-04 2 views
1

Это мой код. без входа также я могу войти на домашнюю страницу. при нажатии на кнопку выхода из системы она выводит меня на страницу входа. если я снова загружаю домашнюю страницу без входа, она работает. как я разрешаю эту проблему?yii2 Контроль доступа не работает

public function behaviors() 
     { 
      return [ 
       'access' => [ 
        'class' => AccessControl::className(), 
        'only' => ['logout','index','prospects','merchants','accounts','notifications','reports','view-prospect','new-merchant-account-info','new-merchant-bank-info','new-merchant-business-info','new-merchant-success-message','new-merchant','new-prospect-success-message','edit-prospect','new-prospect'], 
        'rules' => [ 
         [ 
          'allow' => true, 
          'actions' => [], 
          'roles' => ['?'], 
         ], 
         [ 
          'actions' => ['logout','index','prospects','merchants','accounts','notifications','reports','view-prospect','new-merchant-account-info','new-merchant-bank-info','new-merchant-business-info','new-merchant-success-message','new-merchant','new-prospect-success-message','edit-prospect','new-prospect'], 
          'allow' => true, 
          'roles' => ['@'], 
         ], 
        ], 
       ], 
       'verbs' => [ 
        'class' => VerbFilter::className(), 
        'actions' => [ 
         'logout' => ['post'], 
        ], 
       ], 
      ]; 
     } 

ответ

0

Я думаю, вы должны ограничить доступ к гостю только к странице входа

public function behaviors() 
     { 
      return [ 
       'access' => [ 
        'class' => AccessControl::className(), 
        'only' => ['login',], 
        'rules' => [ 
         [ 
          'allow' => true, 
          'actions' => [], 
          'roles' => ['?'], 
         ], 
         [ 
          'actions' => ['logout','index','prospects','merchants','accounts','notifications','reports','view-prospect','new-merchant-account-info','new-merchant-bank-info','new-merchant-business-info','new-merchant-success-message','new-merchant','new-prospect-success-message','edit-prospect','new-prospect'], 
          'allow' => true, 
          'roles' => ['@'], 
         ], 
        ], 
       ], 
       'verbs' => [ 
        'class' => VerbFilter::className(), 
        'actions' => [ 
         'logout' => ['post'], 
        ], 
       ], 
      ]; 
     } 
1

Вы должны прочитать: http://www.yiiframework.com/doc-2.0/guide-security-authorization.html

actions: определяет, какие действия соответствует этому правилу. Это должен быть массив идентификаторов действий. Сравнение чувствительно к регистру. Если эта опция пуста или не установлена, это означает, что правило применяется ко всем действиям.

Таким образом, вы должны просто попробовать:

'rules' => [ 
    [ 
     'actions' => ['login'], 
     'allow' => true, 
     'roles' => ['?'], 
    ], 
    [ 
     'actions' => ['logout','index','prospects','merchants','accounts','notifications','reports','view-prospect','new-merchant-account-info','new-merchant-bank-info','new-merchant-business-info','new-merchant-success-message','new-merchant','new-prospect-success-message','edit-prospect','new-prospect'], 
     'allow' => true, 
     'roles' => ['@'], 
    ], 
], 
0

Прежде всего, вы можете установить URL входа будет доступ к каждому.

роли => [ '?']

и выход из системы действия будут иметь доступ только пользователю логин

роли => [ '@']

Rest все действия вы можете добавить в эту функцию

'rules' => [ 
     [ 
      'actions' => ['login'], 
      'allow' => true, 
      'roles' => ['?'], 
     ], 
     [ 
      'actions' => ['logout'], 
      'allow' => true, 
      'roles' => ['@'], 
     ], 
    ], 
Смежные вопросы