美文网首页程序员
Shiro简介,认证,授权

Shiro简介,认证,授权

作者: LoveQueena | 来源:发表于2018-05-10 17:45 被阅读0次

    最近在学习Shiro,所以写下这篇文章记录下自己的学习成果,可能在学习过程中存在一些理解性不透彻,或者错误的地方。分享给大家,希望大家给出一些自己理解建议,大家能一起进步。


    Shiro的简介:

    1、 什么是Shiro?

    1、Apache的强大灵活的开源安全架构

    2、实现用户认证,授权,企业会话管理,安全加密,缓存管理

    2、Shiro整体架构 

    shiro的整理架构,如图所示:

    框架中提供了认证,授权等,解析如下:

    1、红色框中,使用的用户,也就是够被嵌入到的语言,框架

    2、Authenticator:认证器,管理登录的登入/登出

    3、Authorizer:授权器,授予主体有哪些权限

    4、Session Manager:Session管理器,自身管理session,可无需借助任何web容器的情况下管理session。

    5、Session Dao:提供session的操作,提供增删改查功能

    6、Cache Manager:缓存管理器,缓存角色数据和权限数据

    7、Pluggable Realms:链接数据库的桥梁,获取角色数据和权限数据等

    8、Cryptography:对数据进行加密

    3、与Spring Security的对比

    Shiro:1、比较简单,灵活  2、可以脱离Spring独立使用   3、粒度比较粗

    Spring Security: 1、比较复杂,笨重   2、不可脱离Spring独立使用   3、粒度更细

    Shiro认证

    1、Shiro认证主要调用的是框架中的Authenticator(认证器),认证步骤分为五步:

    一 、创建Security Manager  

    二、主体提交认证

    三、Security Manager认证

     四、Authenticator认证

    五、Realm验证

    如图:

    2、代码实现

          Test测试类编写 

           SimpleAccountRealm simpleAccountRealm = new SimpleAccountRealm();

           @Beafor

           public void addUser(){

                   simpleAccountRealm.addAccount(username,password);

           }

       注:username,password编写时用具体的用户名,密码验证

           1、创建SecurityManager

                DefaultSecurityManager manager = new DefaultSecurityManager();

           2、初始化realm

                 manager.setRealm(simpleAccountRealm);

           3、主体提交认证请求

                 SecurityUtils.setSecurityManager(manager);

                (1)、获取主体  

                 Subject subject = SecurityUtils.getSubject();   

                (2)、获取Token

                      UsernamePasswordToken token = new UsernamePasswordToken(username,password);

                (3)、提交主体

                      subject.login(token);

                (4)、验证主体

                      subject.isAuthenticated();

    Shiro授权

    1、shiro授权跟认证差不多,只是使用了授权器(Authorizer),步骤如下:

         一、创建SecurityManager

         二、主体授权

        三、SecurityManager授权

        四、Authorizer授权

        五、Realm获取角色权限数据

    2、代码实现(在认证的基础上添加授权代码)

          修改认证代码

          1、修改SimpleAccountManager

                simpleAccountManager.addAccount(username,password,"admin","root");

                password后为权限roles,加粗部门为授权信息,可以用逗号分隔实现多权限配置(admin,root则为设置的权限信息)

           2、主体添加checkRoles

                subject.checkRoles("admin","root");

    相关文章

      网友评论

        本文标题:Shiro简介,认证,授权

        本文链接:https://www.haomeiwen.com/subject/ohdnrftx.html