java - 能否將 MongoDB 作為 Shiro 的 realm 實現?
問題描述
我的需求是從數據庫中讀取用戶及權限信息,以完成認證和授權。Shiro 提供了 JdbcRealm 實現,沒有 MongoDB 的 realm 實現。請問能否:
將 MongoDB 作為 Shiro 的 realm 實現?
如果可以,具體的配置該怎么寫?(Google 到一份具體實現代碼,但是缺少相關配置文件)
問題解答
回答1:謝邀, 你只需要實現自己的Realm就行, 比如:
public class MyRealm extends AuthorizingRealm { // 認證 @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { // TODO 從數據庫中獲取用戶信息, 從Mongo中查出來的 return null; } // 授權 @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // TODO 從數據庫中獲取授權信息, 從Mongo中查出來的 return null; }}
然后把你自己的Realm設置到RealmSecurityManager中, 比如:
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();securityManager.setRealm(new MyRealm());
然后把這個SecurityManager設置到ShiroFilter中就行, 比如:
ShiroFilterFactoryBean shiroFilterFactory = new ShiroFilterFactoryBean();shiroFilterFactory.setSecurityManager(securityManager);
相關文章:
1. java - 如何在Fragment中調用Activity的onNewIntent?2. python - (初學者)代碼運行不起來,求指導,謝謝!3. python的文件讀寫問題?4. mysql里的大表用mycat做水平拆分,是不是要先手動分好,再配置mycat5. javascript - jquery hide()方法無效6. javascript - js 對中文進行MD5加密和python結果不一樣。7. javascript - 圖片鏈接請求一直是pending狀態,導致頁面崩潰,怎么解決?8. window下mysql中文亂碼怎么解決??9. python - 獲取到的數據生成新的mysql表10. javascript - h5上的手機號默認沒有識別
