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

发布于 2022-09-04 22:32:32 字数 292 浏览 31 评论 0

我的需求是从数据库中读取用户及权限信息,以完成认证和授权。Shiro 提供了 JdbcRealm 实现,没有 MongoDB 的 realm 实现。
请问能否:

  1. 将 MongoDB 作为 Shiro 的 realm 实现?

  2. 如果可以,具体的配置该怎么写?(Google 到一份具体实现代码,但是缺少相关配置文件)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┼── 2022-09-11 22:32:32

谢邀, 你只需要实现自己的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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文