本文主要是介绍shiro mgt包下DefaultSubjectFactory类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2021SC@SDUSC
DefaultSubjectFactory类图如下:
创建DelegatingSubject 实例的默认SubjectFactory实现。
简单来说就是通过工厂模式产生DelegatingSubject实例。
该类只有两个方法:
1.createSubject
public Subject createSubject(SubjectContext context) {SecurityManager securityManager = context.resolveSecurityManager();Session session = context.resolveSession();boolean sessionCreationEnabled = context.isSessionCreationEnabled();PrincipalCollection principals = context.resolvePrincipals();boolean authenticated = context.resolveAuthenticated();String host = context.resolveHost();return new DelegatingSubject(principals, authenticated, host, session, sessionCreationEnabled, securityManager);}
通过传入的上下文对象context来创建新的DelegatingSubject对象,典型的工厂模式应用。
2.newSubjectInstance
protected Subject newSubjectInstance(PrincipalCollection principals, boolean authenticated, String host,Session session, SecurityManager securityManager) {return new DelegatingSubject(principals, authenticated, host, session, true, securityManager);}
函数作用域为protected,留给子类继承,如果需要实例化自定义 Subject 类,就直接覆盖 SubjectContext。
总结
DefaultSubjectFactory类是工厂,createSubject函数通过context对象创建新的DelegatingSubject实例,newSubjectInstance可以通过自定义的参数来创建DelegatingSubject实例
这篇关于shiro mgt包下DefaultSubjectFactory类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!