上一节说的是subject,这次说一下如何构成subejct——使用subjectContext类。这个类就是一个map,然后将构建subject的所有属性都组织到一起,然后传递给一个subjectFactory,用于构成一个subject。
他的里面也含有subject,并且每一次在创建新的subject的时候都会去尝试调用getSubject方法以获得原来的subject,但是我在setSubject上加了断点,从来没有遇到过setSubject的情况。
用于组成subject的属性都有这些:
Securitymanager,
request,
reponse,
session(不是httpSeesion,而是 shiro封装的session,但是在建立subject的时候没有session ),
PrincipalCollection(在第一次建立subject时只从rememberMeManager中获得,在使用默认的cookiRememberMeManager时也就是从cookie中获得)