我是python和django的新手。我正在尝试使用django框架进行安全的用户身份验证。我在[templates / user]中创建一个login.html页面。如果登录成功,用户将导致user / ContactSuccess.html。
ContactSuccess.html:
<html>
---------{{request.user.username }}------------
{% if request.user.is_authenticated %}
<p>Welcome, {{ user.username}}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
<body>success</body>
</html>
views.py
............
def testlogsuccess(request):<br/>
if not request.user.is_authenticated():
return HttpResponseRedirect("/accounts/login/")
else:
user = request.user.is_authenticated()
return render_to_response('user/ContactSuccess.html',locals())
..............
urls.py:
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
(r'^accounts/login/$',login),
(r'^accounts/logout/$', logout),
(r'^accounts/profile/$', views.testlogsuccess),
它的工作正常。
输出是:
---------Ji------------
Welcome, . Thanks for logging in.
success .
但我的问题是当我停止我的devlopment服务器然后再次启动它然后尝试网址'http://127.0.0.1:8000/accounts/profile/'而无需登录,它仍然显示上述输出。我怎么能避免这种情况。
我使用的是django 1.3,python 2.7.2和windows7。
答案 0 :(得分:2)
问题在于,确定用户是否已通过身份验证的值由浏览器确定 - HTTP身份验证会保存用户名和密码,然后或多或少地将其添加到每个请求中。为了阻止登录工作,您需要告诉浏览器停止。
有关该主题的大量相关信息here。
由于这是一个测试环境,并且由于每次重新启动浏览器时都会重置或更少重置身份验证标头,我建议只需关闭浏览器并再次打开它...这将是最简单的。