您的位置:首页技术文章
文章详情页

java - 能否将 MongoDB 作为 Shiro 的 realm 实现?

浏览:56日期: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
相关文章: