我们在平常使用Shrio进行身份认证时,经常通过获取Subject 对象中保存的Session、Principal等信息,来获取认证用户的信息,也就是说Shiro会把认证后的用户信息保存在Subject 中供程序使用
public static Subject getSubject()
{
return SecurityUtils.getSubject();
}
Subject 是Shiro中核心的也是我们经常用到的一个对象,那么Subject 对象是怎么构造创建,并如何存储绑定供程序调用的,下面我们就对其流程进行一下探究,首先是Subject 接口本身的继承与实现,这里我们需要特别关注下Web DelegatingSubject这个实现类,这个就是最终返回的具体实现类
一、Subject的创建
在Shiro中每个http请求都会经过SpringShiroFilter的父类AbstractShiroFilte中的doFilterInternal方法,我们看下具体代码
```
protected void doFilterInternal(ServletRequest servletRequest, ServletResponse servletResponse, final FilterChain chain)
throws ServletException, IOException {
相关文章

Halo 开源项目学习(七):缓存机制
基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问、更新的数据存入到缓存。Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存、Redis、LevelDB ...

最近有个朋友的需求,用油猴写了一个插件,可以看五学教育(wuxuejiaoyu.cn)的网课
湖南环境生物职业技术学院 ,就是以前的湖南生物机电学校,成人高考需要看网课,问我有没有办法.我写了一个油猴插件,一天时间差不多把网课和考试都搞完了.....油猴还真的不错, 后台使用python fl...

MySql主要性能指标说明
在项目中,数据库通常会成为性能和负载的主要瓶颈。因此,监控和相应优化数据库的各种性能指标是开发和运维人员需要面对的主要任务,这部分工作将贯穿项目从开发到运营的整个周期。[En]In the proje...

SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-打包配置
SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且不可...

Halo 开源项目学习(三):注册与登录
基本介绍 首次启动 Halo 项目时需要安装博客并注册用户信息,当博客安装完成后用户就可以根据注册的信息登录到管理员界面,下面我们分析一下整个过程中代码是如何执行的。 博客安装 项目启动成功后,我们可...

RabbitMQ与SpringBoot整合
前文总结了Dubbo与SpringBoot的整合(https://www.cnblogs.com/cott/p/12373043.html),本文基于这套框架,引入RabbitMQ消息队列。 1.在l...

ch04 Java流程控制
Java 流程控制 Scanner对象 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般使用hasNext()与hasNextLine()判断是否还有输入的数...

80后的互联网记忆
现在下载音乐的网站越来越少,网易云黑金会员,居然一个月只能下载300首,一个月只能下载这么多,再多就超标了. 另外网易云下载的歌曲居然是ncm格式的,只能用网易云打开 无比怀恋80后时代的互联网,看新...

Elasticsearch必知必会的干货知识二:ES索引操作技巧
一次性创建包含完整的别名(alias)、字段(mappings)、设置(settings)的索引,如: ``` PUT /index_name { "index_name":{ "aliases":{...

SSM项目的登录功能controller层的实现
1.需求分析 用户在登录页面,输入用户名和密码,点击"登录"按钮或者回车,完成用户登录的功能. 用户名和密码不能为空 用户名或者密码错误 , 用户已过期 , 用户状态被锁定, ip受限 都不能登录成功...

Java(7)大数
如果基本的整数和浮点数精度不能够满足需求,那么可以使用 java.math包中两个很有用的类: BigInteger和 BigDecimal。这两个类可以处理包含任意长度数字序列的数值。 BigInt...

Mysql-强制改密
MySQL V8.0.22 [mysqld] # 跳过登录验证 skip-grant-tables ```sql use mysql; update user set authentication_s...

拜托,面试官别问我「位图」了
这是之前面试的时候面试官问到过的一个问题,今天正好看到 布隆过滤器,写篇文章总结一下 我们先看一下流程,流程懂了,问题就解决 90%了 我们都知道一个 int 占 4字节,一个字节又有 8个bit位,...

JAVA流程控制if、switch、while、do while、for、break、continue的用法及区别
选择结构 if 选择结构 语法 if(布尔表达式) { //当布尔表达式为true将执行的语句 } ```java if(布尔表达式) { //当布尔表达式为true将执行的语句 }else{ //当...

vue项目中跨域问题的解决
跨域问题的解决(在后端进行解决) 1.CorsConfig.java ```java package com.jihu.config; import org.springframework.conte...