python-3.x - 在 django 中注销使用 HTTP Apache LDAP 登录的用户的解决方法
问题描述
在 Django 2.2 应用程序中,用户可以通过在浏览器提示中提供用户名和密码来“通过 http (Apache LDAP)”登录(如下所示):
问题是当我使用logout
定义的默认 django 注销用户时django.contrib.auth
,用户仍然能够访问应用程序。login
简单来说,djangologout
对应用程序没有任何影响。
我了解到,注销用户的唯一方法是关闭浏览器窗口。但我想使用 django 实现注销功能。
在对这个问题进行了一些谷歌搜索之后,我在这里找到了一些相关的东西,它显示了以下方法:
class HttpAuthMiddleware(object):
def process_request(self, request):
if request.path == '/accounts/logout/':
httpResponse = HttpResponse()
httpResponse.status_code = 401
httpResponse.headers['WWW-Authenticate'] = 'Basic realm="<same realm as in the http server>"'
return httpResponse
else:
# check for http headers - maybe the user is already logged in using http auth
...
这是注销功能的解决方法。它基本上检查request.path == '/accounts/logout/'
哪些有助于我使用默认的 djangologout
功能。
我希望此代码段将用户重定向回浏览器提供的相同登录提示(如上图所示)。但是我需要一些帮助来完成上述代码片段并将其添加到我的项目中。
请分享您对此的了解,即使它不能完全帮助我。
谢谢你尽你所能的帮助!
解决方案
您不能同时执行 401 的问题是未经授权的状态和重定向需要 301 或 302。但是您可以做的是向上述响应发送正文,该响应可以自动将浏览器重定向到登录页面。
例子
<html>
<body onload='go2Login()'>
<h3>You have loggout successfully</h3>
<script type='text/javascript'>
function go2Login(){
window.location.href='../login/'
}
</body>
</html>
希望它有效。
推荐阅读
- javascript - 如何使用 Plupload 上传 zip.js 解压缩的文件
- javascript - 如何将数组的某些值作为 CSS 样式属性插入到动态表中?
- python - 在 TensorFlow 模型中的每一行上输出带有 softmax 激活的矩阵
- reactjs - JEST:无法访问道具中的功能
- python - python函数执行后浏览器自动退出?
- spring - 通过spring控制器获取jsp中的值
- openstreetmap - 在 OSM 地图中查找城市的标签
- html - 从模型变量和 for 循环中选择列表的选项
- r - data.table 语法有一些问题
- intellij-idea - 我在项目中的课程随机变得对 intellij 中的其他课程不可见