天天看點

Apache Shiro授權流程授權流程ModularRealmAuthorizer進行多Realm比對流程

授權流程

1.首先調用Subject.isPermitted/hasRole接口,其會委托給SecurityManager,而 SecurityManager 接着會委托給 Authorizer。

2.Authorizer是真正的授權者,如果調用如isPermitted(“user:view”),其首先會通過PermissionResolver 把字元串轉換成相應的 Permission 執行個體。

3.在進行授權之前,其會調用相應的 Realm 擷取 Subject 相應的角色/權限用于比對傳入的角色/權限。

4.Authorizer 會判斷 Realm 的角色/權限是否和傳入的比對,如果有多個Realm,會委托給 ModularRealmAuthorizer 進行循環判斷,如果比對如 isPermitted/hasRole 會傳回true,否則傳回false表示授權失敗。

ModularRealmAuthorizer進行多Realm比對流程

1.首先檢查相應的 Realm 是否實作了實作了Authorizer。

2.如果實作了 Authorizer,那麼接着調用其相應的isPermitted/hasRole接口進行比對。

3.如果有一個Realm比對那麼将傳回 true,否則傳回 false。