shiro 授权

授权的三要素: 用户,角色,权限

把权限 赋给角色, 把角色和一个多个用户相关联

授权: 匹配过程

Shiro判断用户是否有权限的 三种方式

1. 编写代码—— 在java代码中 使用ifelse块 执行授权检查

基于角色:使用Subject的hasRole方法

    Subject currentUser = SecurityUtils.getSubject();
    //登录过程省略
    List<String> roles = new ArrayList<String>();
    roles.add("role1");
    roles.add("role2");
    roles.add("role3");

    // 1.检查currentUser是否被分配了角色role1
    boolean result1 = currentUser .hasRole("role1");

    // 2.检查currentUser是否被分配了所有角色
    boolean result2 = currentUser .hasAllRoles(roles);

    // 3.检查currentUser是否被分配了所有角色,返回一个与方法参数中目录一致的hasRole结果集
    boolean[] results = currentUser .hasRoles(roles);


基于角色:断言支持,与使用hasRole的if else一样

    //1.如果currentUser被分配了role1,才会继续执行    
    currentUser.checkRole("role");

基于权限:Subject的isPermitted方法

    boolean flag = currentUser.isPermitted("p1:create");

基于权限:断言支持:Subject的isPermitted方法

    currentUser.checkPermission("p1:create");

2 JDK 的注解—— 添加授权注解给java方法

基于注解的做法,需要AOP框架支持。所以需要和Spring集成。>

shiro提供的注解

3 JSP/GSP 标签库 —— 控制基于角色和权限的jsp页面输出

posted on 2017-09-27 17:24  dreamstar  阅读(50)  评论(0编辑  收藏  举报