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. python - pig latin问题 总是出现list/string index out of range2. 安装mysql,完成时提示的是用户名root,在终端查看版本时显示的不是root,请问这怎么解决3. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?4. css3 - canvas在IOS8中不兼容。画不出来。5. 为什么HTML5规范中会包含一些和html无关的东西?如本地存储等。6. 闯关的第二个问题的答案是错的吧?7. css3 - img垂直水平居中问题8. javascript - npm install 报错,求解9. javascript - nginx 反向代理 js跨域问题?10. python - Pycharm调试代码进行列表遍历时,如何直接赋值指定元素

网公网安备