rbac权限管理方面的一些问题

先说一下我的鉴权思路:
1、项目启动时缓存资源-角色关系到redis中

2、前台请求到网关后统一鉴权,鉴权方式为从redis缓存中读取 资源-角色关系 ,然后使用spring提供的路径匹配器AntPathMatcher进行匹配,查找出该url所需的角色集合
3、最后与用户所拥有的角色进行对比,如果拥有其中任一角色即可正常访问

现在说一下我的问题
比如说我现在有一个用户,他拥有的角色是只有test,而test可以访问的资源如上图,可以看到只有
/system/user/**(/system是目录,不是具体的路由)。

这样的话看起来没什么毛病,该用户就拥有了访问user(对应用户管理)的权限。可是问题来了,我的用户管理页面的api不只包括user/**下的,因为 要对角色授权,此时我还应该访问/system/role/**下的findAll来查询所有的角色,以便对用户进行授权。而这个路径所需的角色可以看到是test所不具有的。所以这就出现问题了

关于这个问题怎么解决呢?目前我想到的办法是在userController新增查询所有角色的接口,调用roleService的相关方法。这样就正常访问,但是这样做的话感觉不是很好,会变得很凌乱,用户模块参杂了本来不属于自己的其他业务·······
另外我的前端菜单是动态生成的,还是根据用户拥有的角色,以及对应角色所拥有的权限。我刚开始对于/system的处理是这样写的/system/**,这样没了上述问题,但是更不可取,因为这样就直接赋予用户/system下的所有权限。虽然用户看不到相应的页面但是如果知道api的话还是可以访问的,不经后端的数据验证是没有什么安全性可言的。

不知道对此各位有什么好的解决办法,或者有其他已经经过验证的权限管理方案,可以交流交流。

回答:

为什么不放到公共类,或者中间件来进行判断呢

以上是 rbac权限管理方面的一些问题 的全部内容, 来源链接: utcz.com/p/173119.html

回到顶部