问题引入,对同一对象进行权限控制,例举为:不同部门中的用户只能被自己部门的人看到,该如何实现。
带入场景:同一个界面中,用户A登入可看见:管理选项,体验选项,退出选项;
用户B登入可看见:退出选项。
在RuoYi界面中的体现:
用户 admin 的视角:
用户 ry 的视角
后端源码分析:
controller:
通过处理“/list”路径的GET请求,在全县验证通过后通过uerService查询用户列表,并将结果封装成分页信息对象返回给前端。
Service:
mapper:
xml.mapper
确定接口以及相关代码
AOP类DataScopeAspect处理注解@DataScope
根据当前登录用户的信息,判断是否为超级管理员,如果不是,则调用dataScopeFilter
方法进行数据权限过滤。这种机制通常用于确保只有非管理员用户才会受到数据权限的约束,管理员用户可以访问所有数据。