繁体   English   中英

Django用户身份验证-无法通过@login_required装饰器

[英]Django User Authentication - Can't pass @login_required decorator

因此,我目前正在尝试通过Braintree( https://github.com/Tivix/django-braintree供参考)实现一个已经存在的用于付款处理的应用程序。 看来此应用程序的所有内容都放在/ payments-billing /目录中,但我似乎无法深入了解它。 似乎阻止我的是放置在视图前面的@login_required装饰器,因为每当我访问目录时,它会将我发送回定义的LOGIN_URL。 但是,我在LOGIN_URL上设置了登录功能,该功能对用户进行身份验证,然后将其发送到/ payments-billing /,但它只是再次重定向回去。 这是我的代码:

username = form.cleaned_data['username']
password = form.cleaned_data['password']

user = authenticate(username=username, password=password)
if user is not None:
    # Password verified for user
    if user.is_active:
       return redirect(self.success_url)
    else:
        return redirect('/')
else:
    return redirect('/')

显然,该用户已通过身份验证并处于活动状态,因为您在尝试通过这两个测试时都通过了该测试,但是它始终只会将用户发送回LOGIN_URL而不是/ payments-billing /。 有人知道这是怎么回事吗?

authenticate功能不会登录用户,而只是检查用户名/密码。 您还必须调用django.contrib.auth.login()进行实际的登录。请参阅文档中的示例。

username = form.cleaned_data['username']
password = form.cleaned_data['password']

user = authenticate(username=username, password=password)

login(request, user)  
### Now it should get redirected to  /payments-billing/

if user is not None:
    # Password verified for user
    if user.is_active:
       return redirect(self.success_url)
    else:
        return redirect('/')
else:
    return redirect('/')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM