SecurityUtils,SecurityManager和Subject

写shiro的入门程序的时候有

SecurityUtils.setSecurityManager(securityManager);

Subject subject = SecurityUtils.getSubject();

对涉及的三个类的关系产生了好奇。

打开SecurityUtils,发现Subject和SecurityManager并没有什么关系。

但是网上说Subject是由SecurityManager管理的。于是更好奇了。发现有一个奇怪的东东:


Builder类

打开Builder发现它是Subject接口的内部类。

Builder内部维护了SecurityManager并且在初始化的时候,调用了SecurityUtils的getSecurityManger类,给securityManger赋值了。然后在buildSubject方法中调用了securityManger的createSubject方法去创建Subject。

buildSubject方法

SecurityManager是一个接口,默认的实现类是DefaultSecurityManger,内部维护了一个SubjectFactory(默认实现类为DefaultSubjectFactory)来创建Subject。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容