RBAC分为两种方式:
基于角色的访问控制(Role-Based Access Control)
基于资源的访问控制(Resource-Based Access Control)
角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经理可以查询企业运营报表,查询员工工资信息等,访问控制流程如下:
根据上图中的判断逻辑,授权代码可表示如下:
Java |
当需要修改角色的权限时就需要修改授权的相关代码,系统可扩展性差。
基于资源的访问控制(Resource-Based Access
Control)是按资源(或权限)进行授权,比如:用户必须具有查询工资权限才可以查询员工工资信息等,访问控制流程如下:
根据上图中的判断,授权代码可以表示为:
Java |
优点:系统设计时定义好查询工资的权限标识,即使查询工资所需要的角色变化为总经理和部门经理也不需要修改授权代码,系统可扩展性强。
我们项目使用基于资源的访问控制:
这个主要就是通过下面注解来实现的
这个注解使用条件就是我们的微服务·必须使用springscruty 也就是要引入相关的坐标。
使用这个注解的原理是什么呢,当我们携带令牌访问微服务的上面资源的时候,我们springscruty就会比较我们令牌中的授权信息和我们注解中的授权信息是否一样,如果不一样那么就会报错。