【问题标题】:user authentication problem in djangodjango中的用户身份验证问题
【发布时间】:2011-09-02 08:18:55
【问题描述】:

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


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

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

【问题讨论】:

  • 你能正确缩进代码吗?关于问题 - 我建议仔细阅读djangobook.com/en/2.0/chapter14。默认情况下,Django 会话保存到数据库,因此重新启动服务器不会注销已登录的 n 个用户...
  • 显示正确。正常情况下工作正常
  • 实际需要假设我登录成功。如果我将 url 复制粘贴到新标签中,那么它会显示你没有经过身份验证...
  • 这意味着我还必须将会话与用户认证一起使用..不是吗?

标签: python django django-1.3


【解决方案1】:

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

有很多关于该主题的相关信息here

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

【讨论】:

  • 'un/pw'?请避免使用这样的缩写。这是什么意思?这是否意味着“存储在浏览器中的身份验证 cookie”?如果是这样,请使用短语而不是隐晦的缩写。
  • 我的 Django 使用 cookie。您如何在每个请求中使用用户名/密码?您是在谈论 HTTP BASIC 身份验证吗?这似乎无关紧要,因为这是使用表格。你能澄清一下你在说什么吗?
猜你喜欢
  • 2015-06-13
  • 2019-06-19
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-08
  • 2016-11-27
  • 1970-01-01
相关资源
最近更新 更多