• 004 shiro的授权


    一 . 概述

      授权: 就是访问控制.  

        在用户认证之后,用户做出的一些操作之前需要判断用户是否有权限可以完成该操作,这个过程就是授权.

      在shiro之中,支持两个方面的授权检测.

      (1)角色授权

      (2)权限授权


    二 授权环境的搭建

    [users]
    trek=123,admin
    [roles]
    admin=user:add,user,del

    我们这里还是使用int文件充当Realm,自然还会使用IniSecurityManager对象完成授权操作.

      上面的文本表示的含义:

      有一个账号为trek,密码为123的用户,他的角色是admin.  

      其中admin角色拥有user:add,user:del的权限.


    三 .授权代码

        //实现shiro的认证过程
            //创建SecurityManager
            SecurityManager securityManager = new IniSecurityManagerFactory("classpath:shiro.ini").createInstance();
            //将当前的SecurityManager设置到当前的环境之中
            SecurityUtils.setSecurityManager(securityManager);
            
            //下面实现的是一个登陆的功能
            //获取Subkect,相当与一个Currentuser
            Subject currentUser = SecurityUtils.getSubject();
            
            //创建认证需要的token
            UsernamePasswordToken token = new UsernamePasswordToken("trek","123");
            
            //实现登录功能
            try {
                currentUser.login(token);
            } catch (AuthenticationException e) {
                logger.info("认证失败,账号为{},密码为{}",token.getUsername(),new String(token.getPassword()));
                throw new AuthenticationException();
            }
            
            logger.info("认证成功!!");
            
            //此处完成shiro的授权操作
            
            //角色授权
            logger.info("当前的用户是否具有admin的角色{}",currentUser.hasRole("admin"));
            
            //权限授权
            logger.info("当前的用户是否具有user:add的权限{}",currentUser.isPermitted("user:add"));

    核心的代码就是上面的红色部分,我们调用了Subjec对象的hasRole()方法,isPermitted()方法分别进行了角色授权和权限授权的操作.

      我们一定需要注意的就是授权就是权限的检查.


    四 .授权流程

    [1]认证之后

    [2]调用Subject的各种授权方法进行操作

      注意 : 授权的方式有两种,

      (1)一种通过方法的返回值的true和false进行授权是否成功的判断

      (2)一种是通过是否抛出异常进行判断.

  • 相关阅读:
    MT【139】公比为有理数
    鼠标右键怎么清除Catalyst Control Center
    人脸识别技术框架
    Qt生成灰度图(转载)
    人脸识别必读的N篇文章
    QT+vs2010下改变可执行程序的图标
    内部排序技术
    ubuntu下配置qt+opengl+opencv
    HOG算子
    基于HOG特征的Adaboost行人检测
  • 原文地址:https://www.cnblogs.com/trekxu/p/9048725.html
Copyright © 2020-2023  润新知