后端鉴权
每个用户的职责划分不同 拥有的权限也是不同的 具体的实现
首先核心逻辑就是SpringSecurity的@PreAuthorize()注解实现的,其参数支持的是一种Boolean类型的值 如果为true则进入方法 反之不能进入方法
而其中的@ss.hasPermi其实就是调用某一个类的某一个方法 也就是调用ss类的hasPermi 这个注解的参数也就是前面传入的参数需要有这个参数的值 才可以访问
然后就会进入hasPermi方法 进入判断用户是否登录是否包含某些权限 如下permissions
然后根据内容匹配返回给前端
细粒度权限
对于数据权限来说,目的就是同一个接口不同的人看到的数据是不一样的,而实现这一操作的核心就是拼接sql语句
在处理需要进行数据权限过滤的接口时,我们自定义了一个注解标记在我们对应方法的业务层的代码上
使用Before作为AOP方法的增强,也就是说在业务层方法的执行前会执行AOP切面里的逻辑,在AOP切面中会进行数据权限sql的拼接
而由于我们的系统使用的是mybatis框架,所以需要将拼接好的sql语句传递到xml中进行执行,
在这里我们系统中所有的实体类都继承了一个BaseEntity,这里面有一个Map集合,我们将拼接好的sql语句传入到这个map集合中进行保存,
在mybatis的xml文件中,判断这个传入对象的map集合中的数据权限的key是否为空,如果不为空则拼接在原有的sql语句后,
这样查询的时候就会带上我们在aop切面中拼接的sql语句了
定义注解
使用注解
核心逻辑处理
xml