Django и mozilla_django_oidc - как выйти из сессии? - PullRequest
0 голосов
/ 03 октября 2018

Я успешно интегрировал тестовое приложение Django с нашей службой Okta IAM, используя пакет mozilla_django_oidc.Теперь я могу войти в систему, используя Okta, что просто здорово.

Но теперь я хочу снова записать из сессии - что я не могу сделать, кажется.mozilla_django_oidc предоставляет в основном три URL:

Наивно я только добавил этот код в свое приложение и ожидал рабочего выхода из системы:

{% if user.is_authenticated %}
  <p>{{ user.email }} - <a href="{% url 'oidc_logout' %}">Logout</a></p>
{% else %}
  # etc.
{% end %}

Проблема в том, что конечная точка logout принимает толькоPOST-запросы.

Теперь, как мне выйти из сеанса?

1 Ответ

0 голосов
/ 28 июня 2019

Я использовал этот трюк для решения проблемы

Файл settings.py

OIDC_OP_LOGOUT_ENDPOINT = "https://{...}/auth/realms/{...}/protocol/openid-connect/logout"
OIDC_OP_LOGOUT_URL_METHOD = "main.openid.logout"

Я создал файл openid в главной папке с методом выхода из системы

main.openid.py

logout_endpoint = import_from_settings("OIDC_OP_LOGOUT_ENDPOINT", "")
return logout_endpoint + "?redirect_uri=" + request.build_absolute_uri("/")

И я создал представление LogoutView, унаследованное от OIDCLogoutView

view.py

class LogoutView(OIDCLogoutView):
    def get(self, request):
        return self.post(request)

И, наконец,

urls.py

path('logout', views.LogoutView.as_view(), name='logout')

Поэтому, когда я использую метод выхода из системы в моей ссылке http (метод GET), он будет перенаправлен на OIDC_OP_LOGOUT_ENDPOINT, который будет перенаправлен на домашнюю страницу текущего сайта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...