我已经使用mozilla_django_oidc
包成功地将Django测试应用程序与Okta IAM服务集成在一起。现在,我可以使用Okta登录了,这很酷。
但是现在我想再次注销会话的 -看来我做不到。 mozilla_django_oidc
基本上提供了三个URL:
name=oidc_authentication_callback
name=oidc_authentication_init
(一个used for the "Login" link)name=oidc_logout
我只是天真地将代码添加到了我的应用程序中,并期望可以正常注销:
{% if user.is_authenticated %}
<p>{{ user.email }} - <a href="{% url 'oidc_logout' %}">Logout</a></p>
{% else %}
# etc.
{% end %}
问题是:logout
端点仅接受POST请求。
现在,我如何注销会话?
答案 0 :(得分:1)
我用这个技巧解决了问题
文件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("/")
我创建了一个继承自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,它将重定向到当前站点的首页