java - 能否將 MongoDB 作為 Shiro 的 realm 實現(xiàn)?
問題描述
我的需求是從數(shù)據(jù)庫中讀取用戶及權(quán)限信息,以完成認證和授權(quán)。Shiro 提供了 JdbcRealm 實現(xiàn),沒有 MongoDB 的 realm 實現(xiàn)。請問能否:
將 MongoDB 作為 Shiro 的 realm 實現(xiàn)?
如果可以,具體的配置該怎么寫?(Google 到一份具體實現(xiàn)代碼,但是缺少相關(guān)配置文件)
問題解答
回答1:謝邀, 你只需要實現(xiàn)自己的Realm就行, 比如:
public class MyRealm extends AuthorizingRealm { // 認證 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // TODO 從數(shù)據(jù)庫中獲取用戶信息, 從Mongo中查出來的 return null; } // 授權(quán) @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // TODO 從數(shù)據(jù)庫中獲取授權(quán)信息, 從Mongo中查出來的 return null; }}
然后把你自己的Realm設置到RealmSecurityManager中, 比如:
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();securityManager.setRealm(new MyRealm());
然后把這個SecurityManager設置到ShiroFilter中就行, 比如:
ShiroFilterFactoryBean shiroFilterFactory = new ShiroFilterFactoryBean();shiroFilterFactory.setSecurityManager(securityManager);
相關(guān)文章:
1. css - 對于類選擇器使用的問題2. javascript - 奇怪的Symbol的問題3. python - 為什么在main()函數(shù)里result 會變成那樣?4. javascript - Web微信聊天輸入框解決方案5. angular.js - angular ng-class里面的引號問題6. docker - 如何修改運行中容器的配置7. 網(wǎng)頁爬蟲 - 用Python3的requests庫模擬登陸B(tài)ilibili總是提示驗證碼錯誤怎么辦?8. javascript - es6將類數(shù)組轉(zhuǎn)化成數(shù)組的問題9. javascript - 有沒有什么好的圖片懶加載的插件,需要包含監(jiān)聽頁面滾動高度,然后再加載的功能10. html - vue項目中用到了elementUI問題
