django中的用户身份验证问题

时间:2011-09-02 08:18:55

标签: python django django-1.3

我是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。

1 个答案:

答案 0 :(得分:2)

问题在于,确定用户是否已通过身份验证的值由浏览器确定 - HTTP身份验证会保存用户名和密码,然后或多或少地将其添加到每个请求中。为了阻止登录工作,您需要告诉浏览器停止。

有关该主题的大量相关信息here

由于这是一个测试环境,并且由于每次重新启动浏览器时都会重置或更少重置身份验证标头,我建议只需关闭浏览器并再次打开它...这将是最简单的。