Есть произвольная страница, например /project/123
Доступ к этой странице должен быть только для зарегистрированных пользователей.
Как сделать, чтобы показывалась форма авторизации, при том, что адрес не менялся бы на какой-нибудь /login, а после авторизации страница просто перевыводилась бы с тем же адресом и уже показывалось то, что положено?
Где вставить проверку на необходимость авторизации и откуда вызывать форму?
Форма логина под любым uri
- selfauthor
- Сообщения: 26
- Зарегистрирован: 2023.10.09, 19:35
- Откуда: Москва
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Форма логина под любым uri
А чем URL так не нравится? Фреймворк по умолчанию делает как раз это на отдельном URL.
Нравится Yii? Давайте сделаем его лучше!.
- selfauthor
- Сообщения: 26
- Зарегистрирован: 2023.10.09, 19:35
- Откуда: Москва
Re: Форма логина под любым uri
Ты заходишь на какую-то страницу. Поскольку ты не авторизован, то тебя перебрасывает на форму авторизации. И в урле уже другая страница. Потом, после авторизации, тебя возвращают обратно.
Но практика показывает, что пользователи, у которых что-то не ладится присылают скриншот или адрес страницы. А это уже страница логина. Т.е. непонятно, на какую страницу они заходили при этом.
На yii нельзя устраивать проверку в разных контроллерах и, оставаясь в том же урле показывать форму логина, обрабатывать её и потом перепоказывать ту же страницу?
Re: Форма логина под любым uri
Можно сделать общий контроллер с нужным методом login и отнаследоваться от него.
Представление грузить исходя из controller->id
Представление грузить исходя из controller->id
-
- Сообщения: 69
- Зарегистрирован: 2013.06.06, 16:07
Re: Форма логина под любым uri
Теоретически, можно сделать behavior на Controller::EVENT_BEFORE_ACTION, перенести функционал авторизации в него.
Внутри него проверять авторизацию. Если нет - рендерить форму. Если есть - просто пропускать.
Или даже через реализацию метода AccessControl::$denyCallback - тогда можно более тонко управлять формой авторизации.
Внутри него проверять авторизацию. Если нет - рендерить форму. Если есть - просто пропускать.
Или даже через реализацию метода AccessControl::$denyCallback - тогда можно более тонко управлять формой авторизации.
- selfauthor
- Сообщения: 26
- Зарегистрирован: 2023.10.09, 19:35
- Откуда: Москва
Благодарю!
Спасибо за варианты!
Буду думать, что удобнее.
Буду думать, что удобнее.