为了账号安全,请及时绑定邮箱和手机立即绑定

Shiro安全框架入门

Mark0101 JAVA开发工程师
难度中级
时长 2小时20分
学习人数
综合评分9.37
112人评价 查看评价
9.4 内容实用
9.3 简洁易懂
9.4 逻辑清晰
  • shrio的整体架构
    查看全部
    1 采集 收起 来源:Shiro整体架构

    2019-01-18

  • Shiro 授权

    查看全部
    1 采集 收起 来源:Shiro授权

    2019-01-09

  • SUB 主体

    Authenticator 认证器(登陆)

    Authorizer 授权器(访问权限)

    SessionManager Shiro自己的Session不依赖于Web

    SessionDAO Session操作增删改查

    CacheManager 缓存操作(缓存角色和权限)

    Reaims Shiro和数据库直接的一个桥梁

    查看全部
    1 采集 收起 来源:Shiro整体架构

    2018-11-19

  • 创建SecurutyManager对象-》主题提交认证 -》SecurityManager认证-》Authenticator认证-》realm验证

    查看全部
    1 采集 收起 来源:Shiro认证

    2018-10-27

  • Shiro会话管理

    其会话管理主要涉及到了Shiro整体框架的SessionManager与SessionDao模块。

    视频中讲的是与Redis相结合,进行对Session的增删改查操作。

    当然Shiro管理Session还可以通过别的介质进行管理。

    步骤如下:

    1. 先加载Redis,在Maven 的pom.xml文件中配置Redis依赖包,坐标如下:


    2. <dependency>
          <groupId>redis.clients</groupId>
          <artifactId>jedis</artifactId>
          <version>2.7.3</version>
      </dependency>
    3. 配置Spring与Redis结合的配置文件。新建立Spring-redis.xml文件。

      由于之前也没接触过Redis,这里只能重复视频中的配置。配置JedisPool的bean,

      其中设置属性jedisPoolConfig、host、port信息,其中JedisPoolConfig则需要另外建立bean,然后将此Bean引入到JedisPool中,host则写本机地址,port一般为6379.当然以上的类都是Redis包下的,Redis是依靠Jedis来实现其功能。然后将此文件导入到Spring.xml主文件中,即采用import标签。

      注意:需要下载相应redis server,程序启动的时候,要先启动redis server,否则会报错。

    4. 新建util包,建立JedisUtil类,此类中主要是对Redis进行增删改查操作。因为Reids是存放键值对的形式。在JedisUtil中,将JedisPool注入到类中,写入单独方法获取Jedis,即通过JedisPool.getResource()来获取Jedis,此方法用于获取Jedis对象,通过Jedis进行直接对Redis存放值进行增删改查操作。

    5. 创建Shiro中SessionDao类,实现AbstractSessionDao,实现其中的增删改查、获取当前活跃的Session等方法。由于redis中存放的是key与value都是二进制的数组形式,所以在修改Redis值的时候需要注意将其转成二进制的数据,并且判断是否存在相应id、session等。

      其中:generateSessionId(session) 生成Serializable序列化的sessionId

                assignSessionId(session,sessionId) 绑定session与相应的Id值

                session.getId 返回的是SessionId值,同理也是Serializable的类型

                     SerializationUtils.serialize (session) 通过序列化将session转成相应的byte[]数组

                     SerializationUtils.deserialize(byte[]) 通过反序列化将字节转成Object类型,可通过强转获取                   Session对象.

         PS:注意session 与 sessionId是否为空的情况判断。另外如果加入前缀,可以在搜索的时候加入前缀+“*”代表搜索前缀是aa的所有匹配的key值。

    6.同样JedisUtils中也需要通过Jedis 的get put expire del keys方法进行获取 存储 设置等待时间 删除操作、查询匹配key的值集合。

    7.新建类SessionManager 继承 DefaultWebSessionManager类,里面可以什么都不做。

    8.在spring.xml文件中,写入SessionManager的Bean 并且写入Sessiondao的bean,将SessionDao的Bean 注入到Sessionmanager中。最后将SessionManager的Bean注入到SecurityManager中即可。

    9.此处将5-1与5-2整合在一起了,5-2的例子就不单独写了。

      此处在测试过程中,发现系统会读取Session多次。

      需要在SessionManager中重写,retrieveSession方法。

      a.先通过参数SessionKey获取sessionId,然后判断sessionkey是否为websessionkey,如果是则通过强转将其转为WebSessionKey并且获取ServletRequest。

    b.核心是将SessionId 与 Session 放到Reqeust中,如果Request有,则直接拿去,没有在去Redis中拿,如此一来则减少了访问Redis的次数,减轻了Reids 的压力。此时判断request是否为空以及sessionId是否为空,如果同时都不为,则通过sessionId 从request的属性中获取Session,在判断Session是否为空,如果不是空,则返回。

    c.当不符合以上条件时候,直接调用父类的方法获取Session,继续判断request是否为空,如果不是空,则将session和sessionId放入到request的属性中即可,方便下次再来寻找直接从request中拿出,不用再多次访问Redis了。

    查看全部
    1 采集 收起 来源:Shiro会话管理1

    2018-09-05

  • shiro集成Spring的数据库连接

    步骤:

    1. 先从pom.xml文件中引入三个包:mysql的驱动包、spring-jdbc包、druid的数据源包。

    2. 在spring下建立spring-dao.xml文件。建立数据源的bean,即DruidDataSource类,并且将属性url、username、password设置值。其次建立jdbctemplate的bean,将数据源注入到相应的bean中。

    3. 创建dao层包,按照分层结构,分dao接口层以及dao.impl的实现类层。写入UserDao以及实现类。

    4. 在spring.xml文件中使用impor标签导入spring-dao.xml文件,以及扫描com.imooc下的所有文件,把新加的注解扫描上。

    5. 调用jdbcTemplate方式:直接使用注解@Resource调动,同理调用接口也是此种方式注入。

    6. 实现类必须加入@Compont否则无法被扫描到。接口可以不加入。

    7. jdbcTemplate.query方法参数1sql语句2数组参数3RowMapper重写方法mapRow通过方法体的参数ResultSet来获取对应字段的查询值即可。

    8. 修改Realm获取值的方式,并且在相应的Controller做判断。

    查看全部
  • 继承 AuthorizatrionFilter 自定义Filter,

    isAccessAllowed 用来校验权限 , 其中的Object 就是filter 定义时后面中括号里的字符串 , 如 perms[sys:delete,user:add] 里面的部分, 

    查看全部
    1 采集 收起 来源:Shiro过滤器

    2018-09-04

  • JdbcRealm的方式访问数据库,通过与数据库的连接,验证相应的登录用户与授权。

    1. jdbcRealm新建其实例,并初始化。

    2. Maven中引入mysql的驱动以及相应数据源的类。

    3. 新建数据源作为成员变量,并且在静态快中初始化url、username、password等。

    4. 将数据源设置到到jdbcrealm中,并且将此realm设置到权限管理中。

    5. 之后进行登录等验证,jdbcrealm会在源码的地方写入了默认的进行认证与授权的sql语句,以及表名什么的都规定好了。如果想更改,则写入新的sql语句,并且调用jdbcrealm中的设置认证Query、设置权限Query、设置角色查询的方法,进行修改。

    6. 当查询权限的时候,会报错,即便库汇总有次权限,仍旧会报错,因为你需要在jdbcrealm中开启persimisson的为true即可。

    7. 其他的与之前的认证与授权的步骤一致。

      Maven的配置:

    8. <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.45</version>
      </dependency>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.0.12</version>
      </dependency>
    查看全部
    1 采集 收起 来源:JdbcRealm讲解

    2018-09-03

  • Shiro 是 Apache的开源的安全框架,

    主要应用在认证、授权,会话管理、安全加密、缓存管理。

    主要应用在权限管理模块的开发。

    查看全部
    1 采集 收起 来源:Shiro简介

    2018-08-31

  • Shiro认证流程:

    1:创建SecurityManager;

    2: 主体提交认证 ;

    3:SecurityManager认证;

    4:SecurityManager是用Authenticator来认证;

    5:authenticator认证是通过Realm获取认证数据做最终的认证

    查看全部
    1 采集 收起 来源:Shiro认证

    2018-08-13

  • Shiro认证


    查看全部
    2 采集 收起 来源:Shiro认证

    2018-08-11

  • Shiro也是通过Security Manager提供安全服务

    Authenticator 认证器 管理登入登出

    Authorizer 授权器 赋予主体有哪些权限

    Session Manager Shiro自己实现的session管理

    Session Dao 对Session进行增删改查

    Cache Manager  缓存管理 可以缓存角色数据、权限数据

    Realms   shiro与数据库的桥梁,

    主体提交认证信息到SecurityManager,SecurityManager调用Authenticator去做认证,Authenticator获取认证信息是通过realms访问数据库,让客户提交信息与realms提供的信息做匹配。

    同样的 Authorizer也是通过调用realms获取权限的。

    cryptography 安全加密

    查看全部
    1 采集 收起 来源:Shiro整体架构

    2018-08-11

  • spring整合shiro

     

    1.创建项目

    2.导入依赖(spring、shiro、springmvc、spring-shiro、shiro-web)

    3.创建web.xml(配置前端控制器、过滤器、加载初始化springmvc.xml、加载spring.xml、post请求乱码)

    4.创建springmvc.xml(配置上下文扫描,配置mvc的处理器适配器、处理器适配器,配置静态文件扫描)

    5.创建spring.xml(加到容器中:shiroFilter,创建SecurityMananger对象并设置自定义Realm,定义自定义的Realm,设置加密的算法)

    6.创建login.html (表单账号、密码提交到UserController)

    7.自定义Realm

    8.创建UserController(接受前台数据,进行shiro登录验证,如果成功返回成功,打印错误) 


    查看全部
    1 采集 收起 来源:Shiro集成Spring

    2018-08-10

  • 创建SecurityManager

    主体提交认证 -> SecurityManager认证

       Realm验证 <-  Authenticator认证  

    查看全部
    1 采集 收起 来源:Shiro认证

    2018-07-12

  • anon:不需要认证

    authBasic:httpBasic

    authc:需要认证之后才能访问

    user:需要当前存在用户才能访问

    logout:退出

    perms[]  :需要具备相关的权限才可以访问

    roles[]:  需要具有[]内的相关权限才可以访问

    ssl : 要求是安全的协议

    port: 要求端口是[]中的



    查看全部
    1 采集 收起 来源:Shiro过滤器

    2018-07-01

举报

0/150
提交
取消
课程须知
基本必备:Java基础,Spring基础,使用过java web
老师告诉你能学到什么?
认识Shiro的整体架构 Shiro认证,授权过程及Session管理,缓存管理 Shiro在项目中的使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!