springboot中的两种登录认证方式

ttisahbt  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(382)

我需要开发一个具有两个身份验证端点的应用程序:一个是登录web表单,另一个是通过自定义令牌发送凭据。
我创建了两个 WebSecurityConfigurerAdapter 登录表单工作得很好,但令牌不行:当我试图通过令牌进行标识时,它运行正常,但总是重定向到注销表单页面。
这是我的配置:

protected void configure(HttpSecurity http) throws Exception {
        http
            .addFilterBefore(authenticationFilter(), CustomAuthenticationFilter.class)
            .authorizeRequests()
                .mvcMatchers(PublicUrls.URLS).permitAll()
                .anyRequest().fullyAuthenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/")
                .permitAll()
                .and()
            .cors()
                .and()
            .logout()
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/login?logout")
                .permitAll();
}

.. 以及令牌配置:

protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        http
            .mvcMatcher(LOGINJWT)
            .addFilterBefore(authenticationFilter(), WebAsyncManagerIntegrationFilter.class)
            .authorizeRequests()
               .antMatchers(LOGINJWT).permitAll()
               .anyRequest().fullyAuthenticated()
               .and()
            .logout()
               .invalidateHttpSession(true)
               .clearAuthentication(true)
               .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
               .logoutSuccessUrl("/login?logout")
               .permitAll();
         // @formatter:on
}

当我尝试通过令牌进行身份验证时,它会运行 customFilter ,以及自定义身份验证提供程序,但始终重定向到登录页面。
订单注解的类别如下所示:

// Token annotation class
@Configuration
@Order(1)
@EnableWebSecurity
public class JwtWebSecurityConfigurerAdapter
        extends WebSecurityConfigurerAdapter {....}

//login annotation clas
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
@EnableWebSecurity
@Configuration
@RequiredArgsConstructor
@Slf4j
@Order(2)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {...}

我看不出有什么问题。

kqlmhetl

kqlmhetl1#

我发现了问题:jwt过滤器之前正在执行 WebAsyncManagerIntegrationFilter .

相关问题