1.简单权限验证装饰器
def login_required(func):
def wrapper(*args, **kwargs):
if not current_user or not current_user.is_authenticated:
return "权限不足,请先登录!"
return func(*args, **kwargs)
return wrapper
@login_required
def view_profile():
return "用户个人资料页面"
print(view_profile())
2.基于角色的权限装饰器
def role_required(role):
def decorator(func):
def wrapper(*args, **kwargs):
if not current_user or not current_user.has_role(role):
return f"权限不足,需要{role}角色才能访问!"
return func(*args, **kwargs)
return wrapper
return decorator
@role_required('admin')
def manage_users():
return "用户管理页面"
print(manage_users())
3.动态权限装饰器
def resource_permission_required(permission_name):
def decorator(func):
def wrapper(*args, **kwargs):
resource_id = kwargs.get('resource_id')
if not current_user or not current_user.has_permission(permission_name, resource_id):
return f"权限不足,无法访问资源ID为{resource_id}的内容!"
return func(*args, **kwargs)
return wrapper
return decorator
@resource_permission_required('edit_post')
def edit_post(resource_id):
return f"编辑文章ID为{resource_id}的内容"
print(edit_post(1))