Shiro-Subject

目的

代表当前的交互对象,存储相关的信息。是SecurityManager的门面,不直接调用SecurityManager。将其抽象为用户,以符合面向对象原则。

获取Subject流程

  • 从当前线程的ThreadLocalMap中获取Subject
  • 不存在,则用请求创建出SubjectContext
  • 从SubjectContext解析出SessionKey
  • 从SubjectContext中解析出权限
  • 用SubjectContext创建Subject
  • 将Subject保存在Session中

方法

在这里插入图片描述

功能

  • 认证:登陆
  • 授权:
    • 检验当前用户的权限
    • 检验当前用户的角色
  • 主体的信息
    • session
    • 认证状态
    • 是否记住
    • 身份信息
  • 绑定线程,实质使用了associateWith方法
    • execute方法
    • associateWith方法
  • 切换身份,切换的身份信息存在session中
    • runAs() ,切换身份
    • releaseRunAs(),退出身份切换并转到以前的身份

相关类

  • SubjectThreadState implements ThreadState:用于将线程与当前的Subject绑定、线程其他操作。
  • SubjectContext extends map<String,Object>:保存Subject的信息
  • static class Subject.Builder:用于对SubjectContext属性赋值操作和创建Subject、SubjectContext
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值