Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查用户是否具有特定的属性值_Python_Authentication_Flask_Web_Flask Login - Fatal编程技术网

Python 如何检查用户是否具有特定的属性值

Python 如何检查用户是否具有特定的属性值,python,authentication,flask,web,flask-login,Python,Authentication,Flask,Web,Flask Login,我目前正在使用flask登录来验证我的网站。 我的模型是一个简单的用户(具有id、mail等),它具有admin(布尔)属性。 我不需要超过2个角色 在调用路由后,如果当前用户的admin属性值为“True”,是否有任何方法可以检查 我尝试通过试用自定义装饰器以及访问会话['admin']来解决此问题,但没有成功。因为@Agung Wiyono.Login提供了一个当前用户变量,请参阅 在您的路线中,您可以执行以下操作: from flask_login import current_user

我目前正在使用flask登录来验证我的网站。 我的模型是一个简单的用户(具有id、mail等),它具有admin(布尔)属性。 我不需要超过2个角色

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


我尝试通过试用自定义装饰器以及访问会话['admin']来解决此问题,但没有成功。

因为@Agung Wiyono.Login提供了一个
当前用户
变量,请参阅

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

from flask_login import current_user

@app.route("/test")
@login_required
def test():

    if current_user.admin:
        print('user is admin')

    #  blah blah
如果您不想使用所需的
login\u
decorator:

@app.route("/test")
def test():

    if current_user.is_authenticated and current_user.admin:
        print('user is authenticated and is an admin')

    #  blah blah
如果要使用装饰器检查
当前用户
管理值是否为

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\u required
的代码,只是它检查
admin
属性的状态-请参阅

并使用如下。请注意,这一点很重要<首先调用code>@login\u required,然后调用
@admin\u role\u required
。Decorator
admin\u role\u required
假定当前用户已通过身份验证。如果首先调用了
admin\u role\u required
,则
当前用户
代理将不具有属性
admin
,并且您将有一个错误

@app.route("/test")
@admin_role_required
@login_required
def test():

    #  need to be logged in and admin be True to get here
    
    #  blah blah

您是否尝试过使用flask login提供的
当前用户