Zend Framework2 использует Zfcuser & Bjyauthorize маршрутизацию

Я начинающий программист Zend Framework. Я использовал ZfcUser для аутентификации и Bjyauthorize для авторизации. Я должен тип пользователей: обычные пользователи и администратор. Поэтому я хочу направить пользователя на страницу A и администратора на страницу B после аутентификации. В конфигурационном файле Zfcuser нет такой возможности, у нас есть только эта строка

 'logout_redirect_route' => 'zfcuser/login',

Как можно указать другой маршрут для разных пользователей?

2 ответа

Решение

Для меня ваша проблема не имеет ничего общего с ZfcUser или BjyAuthorize: просто позвольте пользователю и администратору войти в ваш контроллер, и там вы можете отправить их в зависимости от роли пользователя.

return $this->forward()->dispatch('MyModule\Controller\Index', array('action'=>'PageB'));

Предположим, у вас есть роль администратора в bjyauthorize, которую вы хотите перенаправить на другой маршрут.

В вашем логине действие замените код:

    if ($this->zfcUserAuthentication()->getAuthService()->hasIdentity()) {
        return $this->redirect()->toRoute($this->getOptions()->getLoginRedirectRoute());
    }

с этим кодом:

    if ($this->zfcUserAuthentication()->getAuthService()->hasIdentity()) {
        $roles = $this->serviceLocator->get('BjyAuthorize\Provider\Identity\ProviderInterface')->getIdentityRoles();
        if (in_array('admin',$roles))
        {
            return $this->redirect()->toRoute('admin_route');
        } else {
            return $this->redirect()->toRoute('user_route');
        }
    }
Другие вопросы по тегам