shiro受权时没有走对应的realm的授权解决方案
生活随笔
收集整理的這篇文章主要介紹了
shiro受权时没有走对应的realm的授权解决方案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
畢設(shè)使用shiro授權(quán)時遇到認證時沒有走對應(yīng)的realm,先直接說解決方案:新建 UserModularRealmAuthorizer 類繼承org.apache.shiro.authz.ModularRealmAuthorizer,并重寫認證方法,實現(xiàn)授權(quán)時控制走哪個realm。
public SecurityManager securityManager() {DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();//設(shè)置realm.securityManager.setAuthenticator(modularRealmAuthenticator());List<Realm> realms = new ArrayList<>();//添加多個Realmrealms.add(adminShiroRealm());realms.add(userShiroRealm());securityManager.setRealms(realms);return securityManager;}這是我之前shiroConfig類的securityManager方法的代碼,其中我先add的是adminShiroRealm(),導(dǎo)致了使用注解@RequiresRole開發(fā)時,不管是 @RequiresRoles(value = “user”),還是 @RequiresRoles(value = “admin”),授權(quán)都是先走的adminShiroRealm(),因為先add的是adminShiroRealm()。這就是問題的根源。
自定義UserModularRealmAuthorizer
這里我只是重寫了hasRole這個方法,具體還有很多方法,根據(jù)自己的需要和邏輯去實現(xiàn)就好。
重寫shiroConfig類的securityManager方法
這樣就能實現(xiàn)realm的授權(quán)控制了。
總結(jié)
以上是生活随笔為你收集整理的shiro受权时没有走对应的realm的授权解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021新媒体内容生态数据报告
- 下一篇: 有4件事,我很后悔~