您的位置:首頁技術文章
文章詳情頁

java - 能否將 MongoDB 作為 Shiro 的 realm 實現?

瀏覽:130日期:2023-12-16 13:32:47

問題描述

我的需求是從數據庫中讀取用戶及權限信息,以完成認證和授權。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);

標簽: java
相關文章:
国产综合久久一区二区三区