1. 前言
欢迎阅读 Spring Security 实战干货系列 文章 。截止目前已经对 基于配置 和 基于注解 的角色访问控制进行了讲解。对于一些小项目来说基本是够用的。然而如果希望运营管理人员能够动态的配置和分配权限,以上两种方式显然是满足不了需求的。接下来我们来一起探讨一下思路。
2. 动态的权限控制同样依赖 RBAC 模型
我们依然应该在 RBAC 及其变种的基础上构建动态的权限控制系统。所有被访问的目标,无论是 API、静态资源都应该是关联了角色的东西统称为 资源(Resource) 。我们需要建立起角色和资源之间的关系。
2.1 资源映射到角色
下面是一个资源到角色的映射关系图:
模型大致如上所示,每一个资源对应一个可能无重复的角色集(
Set
集合);你可以注意到一个细节
Role 1
既指向
Resource 1
又指向
Resource 2
中,这是可以理解的,毕竟有可能对同一资源的访问权可能分散到多个角色中去;当然也可以互斥这取决于你的业务。我们选择资源映射到角色是因为当请求时,资源是唯一的而角色可能是多个,如果进行反转的话解析的效率低一些。