Heim  >  Fragen und Antworten  >  Hauptteil

Ist es möglich, MongoDB als Shiro-Realm zu implementieren?

Meine Anforderung besteht darin, Benutzer- und Berechtigungsinformationen aus der Datenbank zu lesen, um die Authentifizierung und Autorisierung abzuschließen. Shiro bietet eine JdbcRealm-Implementierung, es gibt jedoch keine MongoDB-Realm-Implementierung.
Darf ich bitte:

  1. MongoDB als Reich von Shiro implementieren?

  2. Wenn möglich, wie schreibe ich die spezifische Konfiguration? (Google hat einen bestimmten Implementierungscode gefunden, aber die relevanten Konfigurationsdateien fehlen)

大家讲道理大家讲道理2688 Tage vor530

Antworte allen(1)Ich werde antworten

  • 怪我咯

    怪我咯2017-05-17 10:00:54

    谢邀, 你只需要实现自己的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);

    Antwort
    0
  • StornierenAntwort