shiro的Subject对象创建过程

Subject是怎么创建的

首先前面讲了,shiro其实就是一连串的过滤器链,过滤器链的话就是依次执行doFilter方法:我们直接找doFilter的shiro包的实现:
在这里插入图片描述
注意,spring包也有个叫做OncePerRequestFilter的类;

Subject创建入口

我们看OncePerRequestFilter这个类的doFilter方法,是final的,不会被覆写,然后就执行doFilterInternal,还记得第一次请求当时传进来的是什么类吗?是AbstractShiroFilter
在这里插入图片描述

在这里插入图片描述
我们看doFilterInternal的实现:
在这里插入图片描述
在这里插入图片描述

具体创建subject方法

我们直接到具体创建的方法,看源码直接点进去就好了:
最后是DefaultSecurityManager方法调用的createSubject
在这里插入图片描述
就是通过DefaultSecurityManager通过SubjectContext来创建的,SubjectContext的具体实现就是相当于内部维护了个map,然后和用户的各种信息:
然后通过各种解析,赋值,赋值SecurityManager,session,登录信息最后通过

返回Subject

DefaultWebSubjectFactory的SUbject工厂类创建出Subject;至此创建结束;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值