• 权限项目总结(四) shiro 授权


    概述

    Authorization(授权):不难理解,授权就是用来控制当前訪问用户在訪问系统资源权限。

    这个词也做证书的解释,从证书这个角度来讲,推断是否拥有对资源訪问的权限时。当前用户须要提供证书。

    授权的核心

    用户—角色—权限,以角色为中心。普通情况将权限分配给某个角色。然后给用户分配某个权限或是一组权限。

    主要的流程

    • 当前用户调用isPermitted方法,携带着当前用户訪问资源的路径,通常是字符串或者是集合。

    • 调用自己定义的Realm类的重写方法 doGetAuthorizationInfo(PrincipalCollection principals) 这里将获取当前用户的权限数据。能够是.ini 文件,也能够是从数据库中查询。

    • 调用 AuthorizingRealm 类的 getAuthorizationInfo(PrincipalCollection principals) 方法得到角色的权限。内部最后通过 isPermitted(PrincipalCollection principals, String permission) 遍历验证。

    看看最后验证权限的方法,也没有想象中那么复杂。

    public boolean isPermitted(PrincipalCollection principals, String permission) {
    assertRealmsConfigured();
    for (Realm realm : getRealms()) {
    if (!(realm instanceof Authorizer)) continue;
    if (((Authorizer) realm).isPermitted(principals, permission)) {
    return true;
    }
    }
    return false;
    }
    

    Shiro三种方式实现授权

    1:编写代码——在Java 代码中用像if 和else 块的结构运行授权检查。

      @RequestMapping(params = "myjsp")
        public String home() {
            Subject currentUser = SecurityUtils.getSubject();
            if(currentUser.isPermitted("user.do?

    myjsp")){ return "my"; }else{ return "error/noperms"; } }

    2:JDK 的注解——你能够加入授权注解给你的 Java 方法。

    @RequiresAuthentication要求当前用户已经认证通过,才干运行该方法

    @RequiresGuest session中没有权限

    @RequiresPermissions 要求当前用户认证后拥有多个权限

    @RequiresRoles(“administrator”) 要求用户拥有(“administrator”)权限

    @RequiresUser 要求subject为存在于当前系统中的用户

    3:JSP/GSP 标签库——你能够控制基于角色和权限的JSP 或者GSP 页面输出。

    <shiro:authenticated>  
    <a>已通过认证的用户才干</a>  
    </shiro:authenticated>  
    
  • 相关阅读:
    HTML5新增标签
    json和jsonp(json是目的,jsonp是手段)
    xml和json的区别
    display:inline 和display:inline-block和display:block的区别
    前后端数据交互方法(2)
    前端后端是如何交互的
    前端工程师的价值
    angularjs简述
    spring学习
    Hibernate(JPA ) 查询返回只有一个字段,返回类型设置为List<object []>,取值报错
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7295188.html
Copyright © 2020-2023  润新知