2016-09-19 2 views
0

Я использую Django и для аутентификации моего пользователя у меня есть пользовательский поставщик OAuth2. Мне пришлось сначала написать логин и выход из системы, потому что они выполняют некоторые очень конкретные вещи.Django redirect после выхода из системы

Я хотел бы перенаправить на тот же URL-адрес после выхода из системы. Если вы находитесь на странице, требующей аутентификации, я бы хотел перенаправить на домашнюю страницу. Я не нашел никакого ресурса, чтобы узнать, использует ли view/endpoint декоратор login_required

ответ

0

Декоратор login_required принимает параметр для перенаправления пользователей. Вы можете использовать это.

Начиная с Django 1.9, вы также можете использовать AccessMixin.

Если я не понял ваш вопрос, вся информация, которая вам нужна, находится в документах. Используете ли вы более старую версию Django?

+0

Я использую 1.8, и я хочу, чтобы перенаправить после выхода из системы на тот же URL. Если этот конкретный URL-адрес нуждается в аутентификации, тогда у меня будет бесконечный цикл, поэтому мне нужно будет перенаправить на '/' вместо –

0

Конечно, просто используйте параметр строки запроса next и т.д .:

<a href="{% url 'users:user_logout' %}?next={% url 'some_url' %}">Log out</a> 

Остальное лишь вопрос организации иерархии шаблонов, так что вы будете использовать разные адреса в разных шаблонах без повторений.

+0

. Скажем, следующий url требует аутентификации. Django автоматически переадресует логин, я буду автоматически проходить аутентификацию у своего провайдера и вернуться к этому URL-адресу. Следующие параметры в URL-адресе будут работать только в том случае, если целевой странице не требуется аутентификация. –

+0

Затем добавьте класс промежуточного программного обеспечения, который проверяет, пытается ли пользователь получить доступ к URL-адресу, который требует аутентификации и перенаправления на главную страницу, если условие не выполняется. – Siegmeyer

+0

Это то же самое, что и установка '/' для 'LOGIN_URL'. Я просто хочу избежать этого перенаправления ** после того, как ** пользователь посетит страницу выхода. Лучшим решением было бы знать, требуется ли путь для входа в систему. –

0

в settings.py добавить эту строку:

LOGOUT_REDIRECT_URL = 'some_url' 
Смежные вопросы