zoukankan      html  css  js  c++  java
  • (一)Shiro,久闻其名,而今初相识


    多说一句,在学习shiro之前,我觉得应该先用 filter ,自己动手写过粗粒度的权限系统,而不要一上来就使用框架。


    shiro简介

    1. shiro 系出名门 Apache ,是一个权限框架。
    2. 可以在 javaSEjavaEE 环境中使用。
    3. shiro可以完成认证,授权,加密,会话管理,缓存等功能;
    4. spring security 比较,不落下风,更胜一筹,胜在简洁易用,胜在不依赖任何框架,spring security 依赖于 spring ,但是 spring security 可以控制粒度更细。。。

    功能介绍

    • Authentication 登陆/身份认证

      在登陆的时候,验证某个用户是否拥有相应的身份,也就是是否是系统的使用人员;

    • Authorization 授权/权限认证

      验证某个已经认证通过,成功登陆的用户,是否拥有某个权限,一般是判断该身份拥有的角色的权限;

    • Session Manger 会话管理

      用户登陆以后,在没有退出之前,用户的所有信息都保存在会话中,如果是在 WEB 环境中,则是 HttpSession,如果实在 JavaSE 环境中,则是由 shiro 提供的 session

    • Cryptography 加密

      对数据进行加密。比如讲密码加密存进数据库里面;

    • Web Support Web支持

      Web 支持,很容易的集成到 Web 环境中 ;

    • Caching 缓存

      用户登录以后,对其信息,比如角色/权限信息进行缓存,下次再用的时候,不用再去查数据库,可以提供效率 ;

    • Concurrency 多线程认证

      Shiro 支持多线程的并发认证,即一个线程中开启另外一个线程,可以将权限传播过去 ;

    • Testing

      提供测试支持;

    • Run As

      允许一个用户伪装成另外一个用户的身份进行访问,如果允许的话 ;

    • Remember Me

      记住我,成功登陆一次以后,下次不再需要登陆 ;


    从外部看 Shiro 架构

    在这里插入图片描述

    • Application Code

      即应用程序代码 ;

    • Subject

      与应用程序代码直接交互的对象就是 Subject,代表当前用户 ,在 shiro 看来,任何东西,只要你与应用程序代码进行交互了,就把你看做是一个 Subject ,不管你是具体的人,还是只是爬虫,统统都看作 Subject

      Subject 其实像一个对外暴露接口一样,只是门面,任何具体的操作,都交给了后面的 SecurityManager

    • SecurityManager

      安全管理器,所有安全相关的操作,都会与它进行交互,比如认证、授权等功能;

      它是 Subject 背后的 大BOSS ,管理所有的 Subject ,也是整个 Shiro 的中央枢纽,类比于 springMvc 的 前端控制器;。

      连接 SubjectRealm ,负责与 Shiro 的其他组件进行交互 ;

    • Realm

      SecurityManager 下面务实的小弟,整个 Shiro 需要获取权限、身份等安全数据的时候,都需要从 Realm 这里获取,它可以看着是一个 数据源 ;


    从内部看 Shiro 架构

    在这里插入图片描述

    • Subject

      任何与应用进行交互的存在

    • SecurityManager

      Shiro 的话事人,中央枢纽,负责进行认证、授权、会话、缓存等功能 ;

    • Authenticator

      负责对 Subject 进行认证,内部可以自定义认证策略(Authentication Strategy) ;

    • Authorizer

      授权器,对 Subject 进行权限的判定 ,判断是否拥有某个权限;

    • Realm

      安全数据的来源,可以拥有多个 Realm ,可以从内存中获取,也可以从数据库获取,由使用者进行提供,因此一般在应用需要实现自己的 Realm

    • SessionManager

      管理 Session 的生命周期;

    • CacheManager

      缓存控制器,管理缓存的安全数据,比如用户的角色、权限等信息

    • Cryptography

      密码模块,Shiro 提供了常见的加密组件;

  • 相关阅读:
    学习java随笔第五篇:流程控制
    学习java随笔第四篇:运算符
    学习java随笔第三篇:java的基本数据类型
    知识精简
    性能优化(详细)
    2,8,10,16进制转换
    前端优化35例
    性能优化
    字面量自定义事件

  • 原文地址:https://www.cnblogs.com/young-youth/p/11665598.html
Copyright © 2011-2022 走看看