【问题标题】:Django and mozilla_django_oidc - how to log out of session?Django 和 mozilla_django_oidc - 如何退出会话?
【发布时间】:2018-10-03 20:31:18
【问题描述】:

我已使用 mozilla_django_oidc 包成功地将 Django 测试应用程序与我们的 Okta IAM 服务集成。现在我可以使用 Okta 登录了,太棒了。

但现在我想再次退出会话 - 我似乎无法做到。 mozilla_django_oidc基本提供了三个网址:

我只是天真地将该代码添加到我的应用程序中,并期望注销工作正常:

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

问题是:logout 端点只接受 POST 请求。

现在,我该如何退出会话?

【问题讨论】:

    标签: python openid openid-connect


    【解决方案1】:

    我用这个技巧来解决问题

    文件设置.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("/")
    

    我创建了一个从 OIDCLogoutView 继承的视图 LogoutView

    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,该 OIDC_OP_LOGOUT_ENDPOINT 将重定向到当前站点的主页

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多