簡體   English   中英

如何在spring security中忽略請求參數

[英]how to ignore request parameters in spring security

我想使用以下配置實現AuthenticationFailureHandler

// Auth failure handler
@Bean
public AuthenticationFailureHandler appAuthenticationFailureHandler() {

    ExceptionMappingAuthenticationFailureHandler failureHandler = new ExceptionMappingAuthenticationFailureHandler();
    Map<String, String> failureUrlMap = new HashMap<>();
    failureUrlMap.put(BadCredentialsException.class.getName(), "/login?error");
    failureUrlMap.put(AccountExpiredException.class.getName(), "/login?expired");
    failureUrlMap.put(LockedException.class.getName(), "/login?locked");
    failureUrlMap.put(DisabledException.class.getName(), "/login?disabled");
    failureHandler.setExceptionMappings(failureUrlMap);

    return failureHandler;

}

class SecurityConfiguration extends WebSecurityConfigurerAdapter我有:

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/register", "/confirm").permitAll()
                .anyRequest()
                .authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                // username password
                .usernameParameter("username")
                .passwordParameter("password")
                // success and failure handlers
                .successHandler(appAuthenticationSuccessHandler())
                .failureHandler(appAuthenticationFailureHandler())
                .permitAll()
                .and()
                .logout()
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .logoutSuccessUrl("/login?logout")
                .invalidateHttpSession(true)
                .clearAuthentication(true)
                .permitAll()
                .and()
                .exceptionHandling().accessDeniedHandler(accessDeniedHandler())
        ;
    }

有了這個,上面提到的所有內容都沒有重定向到相關的失敗 URL,但是如果我刪除

.anyRequest()
.authenticated()

然后它被重定向到相關的失敗 URL,但這不是一個好習慣,現在的問題是我如何配置configure()以忽略 /login?request 參數並相應地實現進一步的邏輯?

據我了解,問題是像“/login?.*”這樣的網址只有在授權后才可用。 根據spring 示例,您可以使用配置文件中的以下代碼從授權訪問中排除路徑:

@Override
public void configure(WebSecurity web) throws Exception {
    web
        .ignoring()
            .antMatchers("/resources/**");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM