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

Jes*_*ose 8 python flask

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

<flask_login.AnonymousUserMixin object at 0xb67dbd4c>
Run Code Online (Sandbox Code Playgroud)

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


我这样设置了FL:

lm = LoginManager(app)
lm.login_view = 'root'
Run Code Online (Sandbox Code Playgroud)

在views.py中:

@lm.user_loader
def load_user(id):
    return User.query.get(int(id))
Run Code Online (Sandbox Code Playgroud)

实际观点:

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

Jes*_*ose 7

Serendipity给了我这个:

在应用其他装饰器时,请始终记住route()装饰器是最外层的:

我用错误的方式写了它(路线不是最外面的).


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

Flask-Login无论如何都存在于GitHub中,其来源login_required简单易懂.


Bar*_*ski 6

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

你正在使用什么配置?如果LOGIN_DISABLEDTESTING设置为true,则禁用身份验证.

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