shiro框架源碼:

實現登錄認證:

 首先要知道: subject真正的實現類:

subject = (newSubject.Builder()).buildSubject(); 

 

 

SecurityManager :是一個接口,需要找到對應的實現類: 

接口是什麼,就是一種規範,這種規範使得框架可以嵌入到其他框架、軟件中的一個規則

 

SecurityManager 的實現類是DefaultWebSecurityManager; 注意是class ,不是interface【可以是abstract class,但是從設計模式中看的話,如果類繼承了抽象類的話,可能該方法不是真正的方法(子類重寫了)],

 

Subject的創建嗎:

this.securityManager.createSubject(this.subjectContext);

---》DefaultSecurityManager中的

public Subject createSubject(SubjectContext subjectContext) {
    //create a copy so we don't modify the argument's backing map:
    SubjectContext context = copy(subjectContext);
 */
protected Subject doCreateSubject(SubjectContext context) {
    return getSubjectFactory().createSubject(context);
}
protected SubjectFactory subjectFactory;

/**
 * Default no-arg constructor.
 */
public DefaultSecurityManager() {
    super();
    this.subjectFactory = new DefaultSubjectFactory();
    this.subjectDAO = new DefaultSubjectDAO();
}
最終得到Subject類的實現類:DefaultSecurityManager;
登錄實現方法:

 該類的securityManager從配置文件(或java中找) DefaultSecurityManager:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章