flask权限控制

大概思路为通过管理员id的查询角色,然后查看相应权限,为列表类型,然后通过id查询对应的路由规则,进而得出结论得出是否具有该权限

具体代码:

def admin_auth(f):
    @wraps(f)
    def decorated_function(*args,**kwargs):
        return f(*args,**kwargs)
        admin=Admin.query().join(
            Role
        ).filter(
            Role.id==Admin.role_id,
            Admin.id==session["admin_id"]
        ).first()
        auths=admin.role.auths
        auths=list(map(lambda v:int(v),auths.split(",")))
        auth_list=Auth.query.all()
        urls=[ v.url for v in auth_list for val in auths if val==v.id ]
        rule=request.url_rule
        if str(rule) not in urls:
            abot(404)
    return decorated_function

最后使用@调用即可

原文地址:https://www.cnblogs.com/kk328/p/10474062.html