如何在过滤链之前运行某些服务?

时间:2019-04-26 05:54:34

标签: spring-boot spring-security filter

我有两个身份验证提供程序

auth.authenticationProvider(adAuthProvider());
auth.authenticationProvider(jdbcAuthProvider());

首先,用户尝试通过LDAP登录,如果他不在Active Directory中(外部非LDAP用户),则应用程序将尝试通过数据库对其进行身份验证。

如果用户是第一次通过LDAP登录,则需要检查数据库是否使用相同的用户名(某些非LDAP用户可以在数据库中更早注册),如果他的名字不在数据库中,则需要将其登录名插入数据库。在该LDAP用户存在于数据库中之后(我需要此权限来授予他数据库中的某些权限)。

在我的应用中,我也有过滤器

@Bean
public FilterRegistrationBean<LDAPUserExistsInDatabaseFilter> ldapUserExistsInDatabaseFilterRegistrationBean() {
    FilterRegistrationBean<LDAPUserExistsInDatabaseFilter> ldapUserExistsInDatabaseFilterRegistrationBean = new FilterRegistrationBean<>();
    LDAPUserExistsInDatabaseFilter filter = new LDAPUserExistsInDatabaseFilter();

    ldapUserExistsInDatabaseFilterRegistrationBean.setFilter(filter);
    return ldapUserExistsInDatabaseFilterRegistrationBean;      
}

@Bean
public FilterRegistrationBean<MethodPathRequestFilter> methodPathRequestFilterRegistrationBean() {
    FilterRegistrationBean<MethodPathRequestFilter> methodPathRequestFilterRegistrationBean = new FilterRegistrationBean<>();
    MethodPathRequestFilter methodPathRequestFilter = new MethodPathRequestFilter();
    methodPathRequestFilterRegistrationBean.setFilter(methodPathRequestFilter);
    return methodPathRequestFilterRegistrationBean;     
}

这些过滤器从数据库中获取一些信息。

问题是-在运行过滤器链之前,我如何在数据库中检查Authenticatad LDAP用户(过滤器需要数据库的权限)?以及如何在身份验证后立即将他的凭据插入数据库?最高阶的过滤器适合吗?

长话短说-我想执行以下过程-身份验证-在数据库中检查用户(如果没有,请插入-过滤链)

0 个答案:

没有答案