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