如题:现有一个 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={}) ``` |