Flask-Login如何检查用户是否具有某个属性值

问题描述

我目前正在使用flask-login进行我的网站的身份验证。 我的模型是一个具有admin(boolean)属性的简单用户(具有ID,邮件等)。 我不需要两个以上的角色。

如果当前用户的admin属性值为“ True”,是否有任何方法可以检查路由?

我尝试了尝试使用自定义装饰器以及访问session ['admin']来解决此问题的方法,但这没有用。

解决方法

@Agung Wiyono评论Flask-Login提供了一个{ "size": 0,"aggs": { "by_date": { "terms": { "field": "date" },"aggs": { "by_greatest": { "scripted_metric": { "init_script": """ state.field1_greatest = 0; state.field2_greatest = 0; state.field3_greatest = 0; ""","map_script": """ def v1 = doc['field1'].value; def v2 = doc['field2'].value; def v3 = doc['field3'].value; // your comparison logic ""","combine_script": "state","reduce_script": "states" } } } } } } 变量,请参见docs

在您的路线中,您可以执行以下操作:

current_user

如果您不想使用from flask_login import current_user @app.route("/test") @login_required def test(): if current_user.admin: print('user is admin') # blah blah 装饰器:

login_required

如果要使用装饰器检查@app.route("/test") def test(): if current_user.is_authenticated and current_user.admin: print('user is authenticated and is an admin') # blah blah 的管理值是否为current_user

True

此代码或多或少是def admin_role_required(func): @wraps(func) def decorated_view(*args,**kwargs): if request.method in EXEMPT_METHODS: return func(*args,**kwargs) elif not current_user.admin: abort(403) return func(*args,**kwargs) return decorated_view 的代码,除了它检查@login_required属性的状态-参见source

并如下使用。请注意,order of the decorators很重要。首先调用admin,然后调用@login_required。装饰器@admin_role_required假设admin_role_required已通过身份验证。如果首先调用current_user,则admin_role_required代理将没有属性current_user,并且您将遇到错误。

admin