我制作了一个应用程序并扩展了 AbstractUser
以将一些字段添加到我的 User
模型中。在那之后,一切都按预期工作(登录、创建用户、重设密码......)但是当我尝试使用默认注销时
django.contrib.auth.LogoutView
或 include('django.contrib.auth.urls')
它只会忽略注销。当我返回受限页面时,我可以进入并查看内容,我的用户实际上已登录!
我创建了一个这样的自定义注销 View
def custom_logout(request):
print('Loggin out {}'.format(request.user))
auth.logout(request)
print(request.user)
return HttpResponseRedirect('/restrictedpage')
在restrictedpage我有一个打印声明给用户看
print("User logged: {}".format(request.user))
当我点击注销时,这是控制台中显示的内容:
"GET /restrictedpage HTTP/1.1" 200 19820
User logged: ceterre
----- This is where i click logout ------
Loggin out AnonymousUser
AnonymousUser
"GET /accounts/logout/ HTTP/1.1" 302 0 ----- this redirects me to /restrictedpage
User logged: ceterre
"GET /restrictedpage HTTP/1.1" 200 19820
这字面上翻译成:
- I know ceterre is logged
- logging out ceterre
- user logged: AnonymousUser
- redirect to restricted page (where I should have no access since im supposedly logged out)
- user logged: ceterre (without any login or anything...)
最佳答案
登录和注销是 Django(和 AbstractUser 也是)的一部分,因此您不需要扩展这部分代码。您必须做的一件事是在 settings.py 文件中添加这两行代码:
LOGIN_REDIRECT_URL = 'template_name'
LOGOUT_REDIRECT_URL = 'template_name'
关于python - 如何使用自定义用户模型和自定义注销 View 从 Django 注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55581333/