flask中权限访问装饰器

Posted onlyhold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask中权限访问装饰器相关的知识,希望对你有一定的参考价值。

根据session里面保存的管理员id查询出对于的角色,根据角色查询出权限,根据权限查询出能够访问的路径 

# 权限控制装饰器
def admin_auth(f):
@wraps(f)
def decorated_function(*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 v.id == val.id]
rule=request.url_rule
if rule not in urls:
abort(404)
return f(*args, **kwargs)

return decorated_function

 

以上是关于flask中权限访问装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Flask-restful API 授权。在装饰器中访问 c​​urrent_identity

Flask-RESTful中装饰器的使用

python使用上下文对代码片段进行计时,非装饰器

flask之装饰器

python装饰器 语法糖

flask_login 中的 login_required 装饰器未重定向到上一页