我正在使用 django.contrib.auth.views.login and .logout 视图。非常方便,开箱即用,将再次部署AAA+等。

出现问题是因为我不使用单独的登录页面,而是每个页面中都有一个登录框(当然,除非用户登录)。因此,当用户名/密码组合错误时,我会遇到错误。我应该选择这三个路径中的哪个?

  • 有一种秘密方法可以重定向到接下来的成功,而且是错误的。如果是这样,请告诉我!
  • 我写自己的登录视图,同时使用Django的消息系统
  • 我编写一个登录页面(好吧,它只是缺少模板),这样我就可以利用Django auth系统的全部令人敬畏。
有帮助吗?

解决方案

可能的解决方案之一(列表中的第一个 +第三选择):

  1. 您必须提供特殊登录页面(这是定义的 registration/login.html),对于用户,每个普通页面都有登录表格;
  2. 如果用户正常登录(此逻辑处理 django.contrib.auth.views.login):
    • 对于普通页面:将用户重定向到她介绍的页面;
    • 用于登录页面:如果有 next 参数,重定向,否则重定向到主页;
  3. 如果用户未能登录:Redirect(或Redraw)登录页面,则提供了错误;
  4. 如果用户在:普通页面提供注销的链接(如果用户想要重新登录或通过另一个帐户登录,则仍然存在特殊页面)。

在普通页面中,登录表格应该具有这样的东西 <input type="hidden" name="next" value="{{ request.path }}" />.

在项目设置中:

# in settings.py
LOGIN_URL = '/login'     # this should coinside with url pattern of login view
LOGOUT_URL = '/logout'   # same but for logout view
LOGIN_REDIRECT_URL = '/' # url to main page

NB:我不使用django的buildin注销视图,而是使用自己的:几乎相同,但仅针对发布请求才登录。这将不允许用户注销 <img src='my_site/logout' /> 恶意代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top