1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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 val = = v. id ] rule = request.url_rule if rule not in urls: abort( 404 ) return f( * args, * * kwargs) return decorated_function 老师, 这个Admin.query.join(Role)就是把所有的role type 全部取出来么? 后面这个 filter (Role. id = = Admin.role_id,Admin. id = = session[ "admin_id" ] ).first()有点乱,不是很懂这个逻辑,能解释下么,谢谢老师 |