日常无聊总结002-Shiro框架学习

1.基础学习

三个核心组件:Subject, SecurityManager 和 Realms.

Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
  Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
  SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

2.shiro框架运行原理图(来自网络)

[外链图片转存失败(img-8eaWbIZW-1564747687299)(C:\Users\DELL\Desktop\aaa.png)]

3.shiro框架和sping security框架的比较:

(1)shiro框架比sc框架用起来更简单灵活,不用依赖于其他框架(例如spring)就可以独立运行。

(2)srping security 除了不能脱离Spring,shiro的功能它都有。而且Spring Security对Oauth、OpenID也有支持,Shiro则需要自己手动实现。(可以带上srping 看着就很牛X的一个框架)

(3)shiro可以把权限细化到按钮层面(在数据库存储一个用户的所有权限,包括登录权限、菜单展示权限以及细化到每个按钮的权限)

【详细使用步骤见大佬CSDN:https://www.cnblogs.com/jpfss/p/8352031.html

===============================================

4.尽量少用Arrays.asList(“x”,“xx”)方法

List<String> list = Arrays.asList("a", "b", "c");
list.add("c");
System.out.println(list.toString());

add,clear,remove的时候会抛出java.lang.UnsupportedOperationException异常,原因如下:

[外链图片转存失败(img-2wIAUKAY-1564747687300)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1564745839650.png)]

调用asList方法,返回一个ArrayList,但是这个ArrayList不是真的ArrayList,而是Arrays类中的,它自己没有实现add()、remove()等方法,继承父类AbstactList中实现的add方法直接抛出了异常,如下图:

[外链图片转存失败(img-F9fHNamB-1564747687300)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1564745824581.png)]

[外链图片转存失败(img-aWmup5rU-1564747687304)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1564746229107.png)]

所以综上所述,尽量不要使用Arrays.asList()方法将数组转化成字符串。

5.转化成字符串的方法为:

(1)非要使用Arrays.asList()的方法,这样可以变成真正的ArrayList

[外链图片转存失败(img-CT2IdziR-1564747687305)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\1564746363122.png)]

(2)正常循环方法

 //需要转换的数组
        String[] arrays = new String[]{"aa","bb","cc"};
        //初始化list
        List<String> list = new ArrayList<String>();
        //使用for循环转换为list
        for(String str : arrays){
            list.add(str);
        }
        //打印得到的list
        System.out.println(list);

===============================================

个人github:https://github.com/zhangqian0710?tab=repositories

个人博客:poohbear.club

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值