Страница 1 из 1

Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.12, 00:56
user
Есть некий контроллер, нужно, чтобы она был доступен и авторизованным и не авторизованным пользователя?
Как разделить логику?
Сделать его общедоступным, и сделать чтение заголовка с токеном и по нему создать identity?
Не совсем понятна реализация :(

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.13, 13:47
Tonni_regoletti
Наверное, можно выполнять проверку в beforeAction. И в зависимости от пользователя заполнять флаг, по которому будет понятно авторизован он или нет

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.13, 14:19
ElisDN
Либо if (!Yii::$app->user->isGuest()) { ... } else { ... } в одном экшене, либо сделать два разных экшена.

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.13, 18:46
user
я имел в контексте REST API не точно вопрос сформулировал там авторизация через Bearer Token

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.13, 23:26
ElisDN
Без разницы. Yii::$app->user работает и с HttpBearerAuth.

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.13, 23:50
user
ElisDN писал(а): 2020.03.13, 23:26 Без разницы. Yii::$app->user работает и с HttpBearerAuth.
Как если токена не будет, то вылетит 401 ошибка?

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.14, 00:49
ElisDN
Если укажете ему optional, то не вылетит.

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.14, 16:31
user
ElisDN писал(а): 2020.03.14, 00:49 Если укажете ему optional, то не вылетит.
Дмитрий, елси подскажите, как сделать буду благодарен

Re: Один контроллер для авторизованных и не авторизованных пользователей?

Добавлено: 2020.03.14, 20:01
ElisDN

Код: Выделить всё

'optional' => ['my-action'],