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);
相關文章:
