zoukankan      html  css  js  c++  java
  • 快速理解shiro的授权

    授权

    授权一般是在登陆之后才做的操作:

    请查看:快速理解shiro的认证

     整体流程:

    简单的api:

    //是否有对应的角色
    subject.hasRole("root")
    ​
    //获取subject名
    subject.getPrincipal()
    ​
    //检查是否有对应的角色,无返回值,直接在SecurityManager里面进行判断
    subject.checkRole("admin")
    ​
    //检查是否有对应的角色
    subject.hasRole("admin")
    ​
    //退出登录
    subject.logout();

    测试代码:

    public class IsSpringbootShiroApplicationTests2 {
        private DefaultSecurityManager defaultSecurityManager = new
                DefaultSecurityManager();
        private SimpleAccountRealm realm = new SimpleAccountRealm();
        @Before
        public void init (){
            //初始化数据源 并添加角色
            realm.addAccount("woxbwo","123","admin","root");
            realm.addAccount("zbbiex","456","user");
    
            //构建SecurityManager的执行环境
            defaultSecurityManager.setRealm(realm);
        }
    
        @Test
        public void testAuthentication() {
            SecurityUtils.setSecurityManager(defaultSecurityManager);
    
            //获取当前主题 application 或者 user
            Subject subject = SecurityUtils.getSubject();
    
            //用户名密码
            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken("zbbiex","456");
            subject.login(usernamePasswordToken);
    
            //获取认证结果
            boolean res = subject.isAuthenticated();
    
            System.out.println("认证结果为:"+res);
            if(res){
                System.out.println("是否有对应的root角色:"+subject.hasRole("root"));
                System.out.println("getPrincipal:"+subject.getPrincipal());
                subject.logout();
            }
            System.out.println("logout认证结果为:"+subject.isAuthenticated());
    
        }
    }

    测试结果:

    认证结果为:true
    是否有对应的root角色:false
    getPrincipal:zbbiex
    18:12:16.414 [main] DEBUG org.apache.shiro.mgt.DefaultSecurityManager - Logging out subject with primary principal zbbiex
    18:12:16.414 [main] DEBUG org.apache.shiro.session.mgt.AbstractSessionManager - Stopping session with id [958fc3f7-f265-4e8e-8ba1-75937676d5a7]
    logout认证结果为:false

     

  • 相关阅读:
    已解决[Authentication failed for token submission,Illegal hexadecimal charcter s at index 1]
    远程快速安装redis和远程连接
    远程快速安装mysql
    Swiper的jquery动态渲染不能滑动
    微服务架构攀登之路(三)之gRPC入门
    微服务架构攀登之路(二)之RPC
    微服务架构攀登之路(一)之微服务初识
    Go语言中new和make的区别
    Go语言实战爬虫项目
    Go语言系列(十一)- 日志收集系统架构
  • 原文地址:https://www.cnblogs.com/woxbwo/p/11278016.html
Copyright © 2011-2022 走看看