大概思路为通过管理员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
最后使用@调用即可