Как отключить промежуточную страницу выписки из django allauth. Когда пользователь нажимает на ссылку на моем сайте, я хочу, чтобы он сразу же вышел из системы, я хочу удалить эту промежуточную страницу
Как отключить промежуточную страницу выписки в Django allauth
Ответ 1
Установите в настройках ACCOUNT_LOGOUT_ON_GET
- True
.
Также см. документацию
Ответ 2
Обновлено за декабрь 2018 года.
Использование запроса GET, вероятно, является плохой идеей из-за того, что браузеры предварительно выбирают URL-адреса из строки URL. Chrome (на данный момент) довольно плох для этого; он отправит запрос GET
на страницы, которые, по его мнению, вы нажмете при enter
при вводе в строке URL.
Кроме того, пользователи могут добавить ссылку, например <img src="https://example.com/account/logout/">
и вы выйдете из системы. Это не угроза безопасности, поскольку это выводит вас из системы, но это, безусловно, раздражает ваших пользователей.
Вместо этого вам следует рассмотреть возможность использования запроса POST
используя форму с CSRF. Джанго Аллах уже приходит с этим. Вот <form>
со страницы промежуточного выхода:
<form method="post" action="{% url 'account_logout' %}">
{% csrf_token %}
{% if redirect_field_value %}
<input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}"/>
{% endif %}
<button class="STYLE_ME" type="submit">Logout</button>
</form>
В моем случае я просто добавил это в заголовок сайта и сделал кнопку <button>
submit <button>
похожей на любую другую ссылку, используя CSS, поэтому он чувствует себя так же, но форма использует запрос POST.
Но если это не решение, которое вы можете реализовать по какой-либо причине, откройте ваш файл settings.py
(или ваш основной файл настроек) и установите:
ACCOUNT_LOGOUT_ON_GET = True
^ Приведенная выше настройка будет делать то, что вам нужно. Дополнительные настройки Django Allauth можно найти на странице конфигурации по адресу https://django-allauth.readthedocs.io/en/latest/configuration.html?highlight=ACCOUNT_LOGOUT_ON_GET.
Ответ 3
Вот еще один ярлык для сохранения POST-запроса, если вы не хотите связываться со стилем кнопки формы, например:
Скрыть форму:
<form style='display: none;' method="post" action="{% url 'account_logout' %}">
{% csrf_token %}
<input type="hidden" name="next" value="/redirect_target/"/>
<button id="signOutBtn" type="submit">Logout</button>
</form>
Отправить с событием click, прикрепленным к любому элементу, который вы уже создали:
$(document).on('click', '#signOutLink', function() {
$('#signOutBtn').click()
});