<p>我制作了一个应用程序并扩展了<code>AbstractUser</code>以向我的<code>User</code>模型添加一些字段。之后,一切都按预期进行(登录、创建用户、重置密码…),但当我尝试使用默认值注销时
<code>django.contrib.auth.LogoutView</code>或<code>include('django.contrib.auth.urls')</code>
它将忽略注销。当我回到受限页面时,我可以输入并查看内容,我的用户实际上已经登录</p>
<p>我创建了一个自定义注销视图,如下所示</p>
<pre class="lang-py prettyprint-override"><code>def custom_logout(request):
print('Loggin out {}'.format(request.user))
auth.logout(request)
print(request.user)
return HttpResponseRedirect('/restrictedpage')
</code></pre>
<p>在restrictedpage上,我有一个打印语句向用户显示</p>
<pre><code>print("User logged: {}".format(request.user))
</code></pre>
<p>单击“注销”时,控制台中会显示以下内容:</p>
<pre class="lang-sh prettyprint-override"><code>"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
</code></pre>
<p>这从字面上解释为:</p>
<pre class="lang-sh prettyprint-override"><code> - 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...)
</code></pre>