授权模式RBAC(基于角色的权限管理)
谁扮演什么角色,被允许做什么操作
用户对象 user当前操作用户
角色对象 role表示权限操作许可权的集合(角色代表了操作集合,可以理解为权限的集合,一般情况下我们会赋予用户角色而不是权限,即这样用户可以拥有一组权限,赋予权限时比较方便。典型的如:项目经理、技术总监、CTO、开发工程师等都是角色,不同的角色拥有一组不同的权限。)
权限对象 permission:资源操作许可
煮个栗子:张三(user)下载(permission)一个高清无码的种子,需要VIP权限(role)
张三--->普通用户-->授权-->VIP用户-->下载种子
授权(三种方式)
编程方式
Subject subject = SecurityUtils.getSubject();
if(subject.hasRole(“admin”)) {
//有权限
} else {
//无权限
}
注解式:通过在执行的Java方法上放置相应的注解完成:
@RequiresRoles("admin")
public void hello() {
//有权限
} 没有权限将抛出相应的异常;
在JSP/GSP页面通过相应的标签完成:
<shiro:hasRole name="admin">
<!— 有权限 —>
</shiro:hasRole>
添加ini配置
权限表达式定义
用户创建权限:user:create 或 user:create:*
用户修改实例001的所权限:user:update:001
用户实例001的所有权限:user:*:001
一般而言我们的操作只需要关注前面两节 资源:操作
*:*: 所有资源的所有操作权限-->admin
加载配置文件,判断当前用户是否拥有某些角色