0

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

视图.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()) 

.....................

网址.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 .


但我的问题是当我停止我的开发服务器然后重新启动它然后在没有登录的情况下尝试 url 'http://127.0.0.1:8000/accounts/profile/' 时,它仍然显示上述输出。我怎样才能避免这种情况。

我正在使用 django 1.3、python 2.7.2 和 windows7。

4

1 回答 1

2

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

这里有很多关于该主题的相关信息。

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

于 2011-09-02T08:37:52.370 回答