赞
踩
权限管理策略是每个后台管理系统都需要考虑的,我所在的项目组工程比较老旧,所以打算参考若依改造一个新的权限管理系统。
若依的权限管理并不是最完美的,但是属于比较标准的,容易改造。本篇更侧重于设计和概念,具体的代码可以直接阅读源码,不复杂。
《数据范围过滤的动态实现》那篇文章一句话概括:数据查看权限即role-depts的一对多关系,一个role能看到那些部门的数据。
菜单管理是较为复杂的,从表及里涉及后端前端等很多方面。这里主要从后端的角度看待菜单及接口权限的控制。同时忽略到部分次要的功能。
菜单分类
菜单的沟通点是每个菜单对应了一个接口权限,不同点在于页面控制的通常是查看,按钮通常控制修改删除的权限。但是整体来说控制是统一的。
对应前端页面的具体地址,这个需要前端提供
和前端没有天大关联,代表了当前菜单的标识为,可以按照规则拼接成权限标识。
system:user:query
通常由 M:C:F组成,代表了一个权限最小的标识为,达到了按钮级别,这也是权限可以控制到接口(按钮)的根本。
表面上来说这个只是字符串,前后端都会做字符串的解析,前端用于控制按钮的是否可以点击,后端用于控制接口是否可以调用。
@PreAuthorize 标注在每个方法上
@PreAuthorize("@ss.hasPermi('system:menu:list')")
@ss代表的是PermissionService服务,对每个接口拦截并调用PermissionService的对应方法判断接口调用者的权限
其他方式都接近,原理也很简单
PreAuthorize 这个是spring security的注解,可以通过AOP自己实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。