Closed i-coder closed 9 years ago
Если прав нет, модуль кидает исключение (exception), дальше ВАШЕ приложение должно это исключение обработать, так как нужно в вашем конкретном случаи. Сообщение что вы получаете говорит о том, что произошла ошибка при обработке исключения (exception). Скорее всего у вас не настроен errorAction или у не авторизованного пользователя к нему тоже нет прав. Решение: 1 - дать доступ к errorAction прописав разрешение на него в конфиге 2 - настроить обработку ошибок, чтобы при такой-то ошибке редиректило туда-то. Посмотрите вот этот класс, в качестве примера: https://github.com/developeruz/yii2-custom-errorhandler PS: судя по тому, что у вас все еще BadRequestHttpException, у вас не самая новая версия модуля, обновитесь ;)
1 - дать доступ к errorAction прописав разрешение на него в конфиге -? где?как? подскжите! 2 - настроить обработку ошибок, чтобы при такой-то ошибке редиректило туда-то. - обновить вы про composer update?
Да, про composer update думаю решит вашу проблему (т.к баг был, но уже исправлен в сентябре этого года)
Сделал как вы описали выше но не получается((
Проверяйте по шагам: 1 - убедитесь что у вас самая последняя версия модуля: в composer.json должно быть "developeruz/yii2-db-rbac": "1.0.8", Если нет, пропишите последнюю и запустили composer update 2 - убедитесь что у вас в конфиге есть компонент errorHandler 'errorHandler' => [ 'errorAction' => 'site/error', ], 3 - убедитесь, что в site/error (или что у вас прописано в конфиге) обрабатывает ошибки (или делегирует это стандартному ErrorAction). Т.е в контроллере должно быть: public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ] ]; }
Если это все есть, но ошибка остается - пришлите скриншот страницы ошибок.
Вот ваш-же вопрос и коммит с фиксом этого бага: https://github.com/developeruz/yii2-db-rbac/issues/11
Добрый вечер - ВОТ ВСЕ проверил ну не помогает ничего сделать (( немогу сделать свой вывод ошибки http://joxi.ru/Y2LpqqwSnwdgv2
Скорей всего у вас нет доступа до страници с ошибкой проверьте правила для екшна error
немного непонял насчет правила для екшена ??
честно ищу нормальную документацию )) честно у же как то подбешивает что данный модуль ведет себя как вздумается вот допустим натянул тему AdmLTE все данный модуль авторизации ведет себя неадыкватно (( вроде пытаюсь все сначала поставить ставлю настраиваю даю правила вешаю на роль все пользователю далю роль пытаюсь авторизироваться (у вас недостаточно прав)... и везде по разному ведет себя модуль
Как я настраиваю 1 - установил через композер версию "developeruz/yii2-db-rbac": "1.0.8", 2- лезу в можуль User прописываю use developeruz\db_rbac\interfaces\UserRbacInterface; class User extends ActiveRecord implements IdentityInterface,UserRbacInterface 3 - Лезу в контрол допустим SiteController делаю там use developeruz\db_rbac\behaviors\AccessBehavior; public function behaviors() { return [ 'as AccessBehavior' => [ 'class' => AccessBehavior::className(), ] ]; } public function actions() { return [ 'error' => [ 'class' => 'yii\web\ErrorAction', ], ]; }
4 - Ида создаю роль + правила и цепляю на пользователя - все это средствами через админку модуля (permit) 5 - пробую .... не пашет реально уже не в первый раз замечаю что модуль когда захочет тогда и заработает ... на одном проекте БАТЦ заработал ))) среьезно ЧТО Я НЕ ТАК ДЕЛАЮ?!?!
По скриншоту: запускается "yii/base/Controller->runAction('', Array)" - и доступа к нему нет. Модуль бросает Exсeption. В самом приложении срабатывает defaulRoute. Контроллер, когда вызывают пустой action, вызывает index. А модуль проверяет "буква в букву" и доступа к ""(пусто) нет ни у какого пользователя. Что делать? Попробуйте прописать в rules компонента urlManager '/' => 'site/index', т.е явно вызывать actionIndex Для обработки Exception вызывается site/error и к нему у пользователя тоже нет доступа. Пропишите доступ туда в конфиге и когда будите копипастить в другой проект, про это тоже сразу вспомните:
'as AccessBehavior' => [
'class' => AccessBehavior::className(),
'rules' =>
['site' =>
[
[
'actions' => ['error', 'index'],
'allow' => true,
],
]
]
]
AdmLTE, как и любые CSS стили, JSкод (кроме ajax запросов) и верстка никак не влияют на работу модуля (если вы тему ставите ввиде yii-модуля, то все возможно). Вы действительно считаете, что один и тот-же код может "работать по настроению"? Вы точно программист? :)
Кстати, таким образом (через конфиг), можете давать доступ ко всем "проблемным" action, а права доступа прописывать обычным способом в контроллере (через AccessControl), при этом спокойно использовать роли из модуля. Это сбережет вам нервы там, где настроить модуль правильно не получается.
ну если бы я не был программистом "Вы точно программист? :)" я бы не писал бы вам об ошибках в вашем модуле и как их исправлять.
Если допустим сессия умерла то вылетает исключение с ошибками
An Error occurred while handling another error: exception 'yii\web\BadRequestHttpException' with message 'Не достаточно прав'
и много текста, как можно заменить? этот текст или делать редирект?