Flask:自己的login_required装饰器不重定向

时间:2015-03-04 22:22:46

标签: redirect flask decorator login-required

我使用了显示here的te装饰器并根据我的需要调整了它(多个角色) 装饰者检查角色并告诉我,我是否未经授权,但它没有像原始装饰者那样将我重定向到我的登录页面。

def login_required(role="ANY"):
    def wrapper(fn):
        @wraps(fn)
        def decorated_view(*args, **kwargs):
            if not current_user.is_authenticated():
                return lm.unauthorized()
            if ((role not in current_user.roles) and (role != "ANY")):
                return lm.unauthorized()
            return fn(*args, **kwargs)
        return decorated_view
    return wrapper

好的,这是来自flask-login的原始装饰者:

def login_required(func):
    @wraps(func)
    def decorated_view(*args, **kwargs):
        if current_app.login_manager._login_disabled:
            return func(*args, **kwargs)
        elif not current_user.is_authenticated():
            return current_app.login_manager.unauthorized()
        return func(*args, **kwargs)
    return decorated_view

2 个答案:

答案 0 :(得分:0)

你的代码说什么都不算什么,这是一种耻辱,在所有情况下它只是运行lm.unauthorized(),但你为什么不使用redirect?希望它有点帮助;)

答案 1 :(得分:0)

抱歉,重定向工作正常 - 这只是我的view.py中的一个问题。

我希望你至少会发现我的角色适应有点帮助!