login_required装饰器不起作用,flask-Login允许匿名用户

时间:2014-08-13 14:24:33

标签: python flask

我用login_required修饰了一个方法,但我很惊讶它根本没有执行,允许匿名用户。在方法中打印current_user会返回:

<flask_login.AnonymousUserMixin object at 0xb67dbd4c>

是否应该拒绝user.is_autheticated()中返回false的用户?我做错了什么?


我用这种方式设置了FL:

lm = LoginManager(app)
lm.login_view = 'root'
在views.py中

@lm.user_loader
def load_user(id):
    return User.query.get(int(id))

实际观点:

@login_required
@app.route("/messages")
def messages():
    print "current user", current_user
    return "hello world"

2 个答案:

答案 0 :(得分:6)

一切看起来都不错,这可能意味着问题出在其他地方。

您使用的配置是什么?如果LOGIN_DISABLEDTESTING设置为true,则会禁用身份验证。

如果您的配置正常,请在login_required装饰器内设置断点,并检查它为何允许匿名用户进入。

答案 1 :(得分:6)

Serendipity给了我this

  

当应用更多装饰器时,请始终记住route()装饰器是最外层的装置:

我用错误的方式写道(路线不是最外层的)。


PDB可以在调试模式下执行您的可疑方法,以检查本地状态。

无论如何,Flask-Login都存在于GitHub中,login_required的来源非常简单,可以理解。