为什么buildin login_required装饰器不检查user.is_active

时间:2015-10-22 13:45:47

标签: python django security django-authentication

为什么django buildin login_required装饰器不检查is_active标志?

我必须使用另一个装饰器或身份验证类型来解决此问题吗?

我的解决方法是覆盖装饰者:

from django.contrib.auth.decorators import login_required as login

def login_required(fn):
    @login
    def wrapper(*args, **kwargs):
        return fn(*args, **kwargs) if args[0].user.is_active else HttpResponse()
    return wrapper

1 个答案:

答案 0 :(得分:0)

Modern Django states

  

login_required装饰器不会检查a上的is_active标志   用户,但默认的AUTHENTICATION_BACKENDS拒绝不活动的用户。

我已经对此进行了测试,当使用默认的身份验证后端和loging_required装饰器时,不活动的用户无法登录。