【问题标题】:request.user always returns AnonymousUser - Djangorequest.user 总是返回 AnonymousUser - Django
【发布时间】:2017-11-22 11:49:38
【问题描述】:

我有一个应用程序authy_me 并写了一个自定义 URL

url(r'^login/$', authy_views.log_me_in, name="login")

log_me_in 视图具有以下内容:

from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.views import login as auth_login
def log_me_in(request):

    if request.user.is_staff and not has_2fa(request):
        logger.info('is staff but does not have 2FA, redirecting to Authy account creator')
        return redirect('admin/authy_me/authenticatormodel/')
    elif request.user.is_staff and has_2fa(request):
        logger.info("is staff and 2FA enabled redirecting to Authy verification")
        return redirect('2fa')
    elif not request.user.is_staff and not has_2fa(request):
        logger.info('is not staff and does not have 2FA')

    defaults = {
        'authentication_form': AuthenticationForm,
        'template_name': 'login.html',
    }
    return auth_login(request, **defaults)

当我打印request.user 时,我得到的是AnonymousUser,但问题是它正在工作,我没有改变任何东西!我不确定问题是什么。

救命!!

【问题讨论】:

    标签: django


    【解决方案1】:

    在将请求传递给 auth_login() 之前,您需要对用户进行身份验证,

    from django.contrib.auth import authenticate
    
    user = authenticate(username=username, password=password)
    

    检查,如果用户是有效用户,

    if not user:
        return False
    

    现在,您可以将您的请求传递给 auth_login()

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 2016-02-28
      • 2021-08-22
      • 2017-12-02
      • 2016-02-21
      • 2020-01-10
      相关资源
      最近更新 更多