如题:现有一个 Company 用户与一个 User 用户表, 如果登录 User 的话,能访问到 Company 的某些页面, 现在想加个 permission_require 式器,传两个参数,c and u 代码如下:
def permissions_required(user,company): def decorator(f): @wraps(f) def decorated_function(*args,**kwargs): if current_user.role.name == 'User': if not current_user.can(user): return jsonify(code=-10, msg='没有权限', data={}) elif current_user.role.name == 'Company': if not current_user.can(company): return jsonify(code=-10, msg='没有权限', data={}) return f(*args,**kwargs) return decorated_function return decorator
现存问题: 判断第一个为 Flase 后直接 return 了 不 Return 的话,又越权了。 有没有人解决过相关的问题?
1 qile1 2019-07-14 13:13:42 +08:00 via Android 这个用 else 不行?或者 if a=b and c=d: 这样不行? |
![]() | 3 whusnoopy 2019-07-14 22:36:46 +08:00 为啥这个不是白名单机制,现在这个更像是黑名单,但是又不太懂你的设置规则 要更清晰应该是这样吧 ```python if current_user.role.name == 'User' and current_user.can(user): return f(*args, **kwargs) if current_user.role.name == 'Company' and current_user.can(company): return f**args, **kwargs) return jsonify(code=-10, msg='没有权限', data={}) ``` |