Shiro

Shiro是aoache旗下的一个开源安全框架(http://shiro.apache.org/),他将软件系统的安全认证相关功能抽取出来,实现用户身份认证,权限授权,加密会话管理等功能,组成了一个通用的安全认证框架,使用shiro 就可以非常快速的完成认证,授权等功能的开发,降低系统成本!
Shiro_第1张图片

Shiro_第2张图片

  • 构建并初始化SecurityManager对象,然后将此对象交给spring管理.
  • 说明:@Bean注解应用于@Configuration注解描述的类的内部,通过此注解描述的方法,
  • 方法的返回值会交给spring管理,默认bean的名字为方法名.
  • @return 返回值shiro中的安全管理器对象,是shiro框架的核心,此对象中实现了 认证,授权,会话,缓存,加密等一列功能的实现.
  • 此对象实现了认证授权会话缓存加密等一系列功能的实现。Shiro_第3张图片

构建并初始化ShiroFilterFactoryBean对象
*通过此对象,创建过滤器工厂,进而通过过滤器工厂创建过滤器(filter),

  • 并通过过滤器对请求信息进行过滤,例如检测此请求是否需要
  • 认证或此请求是否已认证.
  • Shiro_第4张图片
  • Shiro_第5张图片

凭证适配器
Shiro_第6张图片
检查用户权限,并为访问目标切入点方法的用户做授权操作.

  • 配置授权对应的Advisor对象,此对象会在spring启动时加载,并且通过此

    • 对象可以找到@RequiresPermissions注解描述的方法,然后这些方法在运
    • 行时,由此Advisor对象,调用SecurityManager中的checkPermissions方法
    • Shiro_第7张图片

从缓冲中取用户权限

  • 配置CacheManager对象,此对象中管理着一个Cache对象,此cache可以存储授权时获取的用户权限信息,下次在授权时可以直接从缓存取用户权限,
  • 这样可以减少对数据库的访问压力,并提高其授权性能.
  • FAQ?我们知道此管理器内置一个Cache对象,那请问谁来调用此管理器并获取cache呢?
  • SecurityManager (因为此对象负责授权,授权就需要获取用户权限.)

Session
此对象是在服务端记录客户端与服务端会话状态的一个对象,

  • 这个对象一般是一个会话创建一个,并且会有一个唯一标识(JSESSIONID).
  • 可以通过这样的对象来记录登录用户信息,记录购物车信息,记录验证码信息
  • SessionManager 是什么?管理session的一个对象
  • Shiro_第8张图片

cookie
1.HTTP协议是一种无状态协议,无法存储客户端与服务端的会话状态.

2.客户端与与服务端通讯过程中产生的会话状态信息存储到哪里?(cookie或session)

3.cookie对象由服务端创建,但是是在客户端保存信息的一个对象.

4.cookie对象的类型有两种:会话cookie和持久cookie(我们手动设置了生命周期)

5.会话Cookie在浏览器关闭时,生命周期自动结束.

6.Session对象由服务端创建,并在服务端保存状态信息的一个对象.

7.session对象创建以后会将session对象的id以会话cookie形式写到客户端,客户端可以

再访问服务器时基于这个id找到服务端的session.

8.浏览器关闭,会话cookie结束,写到客户端的jsessionid也就无效了,此时客户端再访问服务

器无法基于jsessionid找到对应的session了(服务端的session可能还是存在的).
设置Cookie有效期Shiro_第9张图片

你可能感兴趣的