45

从 Flask-Login 文档中,它描述了系统用户如何要求经过身份验证的用户模型来访问使用装饰器语法的方法:

from flask_login import login_required    

@app.route("/settings")
@login_required
def settings():
    pass

现在一切都很好,但我希望能够检查用户是否在方法中进行了身份验证,如下所示:

@app.route('/main/', methods=['GET', 'POST'])
main_route():
    if request.method == 'GET':
         if user_is_authenticated():    #Do the authentication here
             #load authenticated /main/ html template etc.
             pass
         else:
             #load unauthenticated /main/ html template etc.
             pass
    ...

这样做的原因是因为它分解了 GET 和 POST 请求,而不是为经过身份验证的用户和未经身份验证的用户复制路由。
我怎样才能做到这一点?是否可以?

4

2 回答 2

80

这在烧瓶中非常简单:

from flask_login import current_user

@app.route(...)
def main_route():
    if current_user.is_authenticated:
         return render_template("main_for_user.html")
    else:
         return render_template("main_for_anonymous.html")

请参阅有关匿名用户的文档

于 2013-12-06T11:05:59.740 回答
2

你可以参考这里的例子。

用户登录后,设置session['logged_in']=True. 同时,您可以使用 Flask-login API 进行一些配置,以防您想使用它的功能。
当您想检查用户是否手动登录而不是使用 Flask-login API 时,请检查session['logged_in'].

于 2013-12-06T08:48:31.827 回答