Heim > Fragen und Antworten > Hauptteil
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:
MongoDB als Reich von Shiro implementieren?
Wenn möglich, wie schreibe ich die spezifische Konfiguration? (Google hat einen bestimmten Implementierungscode gefunden, aber die relevanten Konfigurationsdateien fehlen)
怪我咯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);