博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
004 shiro的授权
阅读量:4953 次
发布时间:2019-06-12

本文共 1621 字,大约阅读时间需要 5 分钟。

一 . 概述

  授权: 就是访问控制.  

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

  在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)一种是通过是否抛出异常进行判断.

 

转载于:https://www.cnblogs.com/trekxu/p/9048725.html

你可能感兴趣的文章
coco2dx服务器简单例子
查看>>
Java回顾之多线程
查看>>
sqlite
查看>>
机电行业如何进行信息化建设
查看>>
Windows Azure Platform Introduction (4) Windows Azure架构
查看>>
【转】chrome developer tool 调试技巧
查看>>
mahout运行测试与kmeans算法解析
查看>>
互相给一巴掌器
查看>>
Android SDK环境变量配置
查看>>
VM10虚拟机安装图解
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
JZOJ 4.1 B组 俄罗斯方块
查看>>
HDU6409 没有兄弟的舞会
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
HDU6205 card card card
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6198 number number number
查看>>
HDU6438 Buy and Resell
查看>>
HDU6446 Tree and Permutation
查看>>