第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

嘗試使用 Spring Security 自定義失敗登錄

嘗試使用 Spring Security 自定義失敗登錄

喵喵時(shí)光機(jī) 2023-08-09 17:13:08
我試圖在 Spring Security 的失敗登錄響應(yīng)中添加更多信息。這是我的配置:@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class SecurityConfig extends WebSecurityConfigurerAdapter {    private final CustomAuthenticationProvider authProvider;    private final CustomAuthEntryPoint customAuthEntryPoint;    public SecurityConfig(CustomAuthenticationProvider authProvider, CustomAuthEntryPoint customAuthEntryPoint) {        this.authProvider = authProvider;        this.customAuthEntryPoint = customAuthEntryPoint;    }    @Override    protected void configure(AuthenticationManagerBuilder auth) throws Exception {        auth.authenticationProvider(authProvider);    }   @Override    protected void configure(HttpSecurity http) throws Exception {        http            .cors().and()            .logout().deleteCookies("SESSION").and()            .authorizeRequests()                .antMatchers("/actuator/**").permitAll()                .anyRequest().authenticated().and()                     .httpBasic().authenticationEntryPoint(customAuthEntryPoint).and()            .csrf().disable();    }}@Componentpublic class CustomAuthEntryPoint implements AuthenticationEntryPoint {    @Override    public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException {        System.out.println("entrypoint " + exception.getClass().getName());        response.getOutputStream().print(exception.getClass().getName());        response.sendError(401, exception.getClass().getName());    }}當(dāng)我嘗試登錄時(shí),它第一次進(jìn)入自定義入口點(diǎn),并出現(xiàn)良好的異常(BadCredentialsException),但接下來(lái)我認(rèn)為 Spring 會(huì)嘗試請(qǐng)求/error,然后它會(huì)返回到入口點(diǎn)InsufficientAuthenticationException(來(lái)自ExceptionTranslationFilter.sendStartAuthentication)。在響應(yīng)中,我有一個(gè) 401,沒(méi)有任何正文,甚至沒(méi)有入口點(diǎn)中定義的異常類(lèi)名。知道配置有什么問(wèn)題嗎?
查看完整描述

1 回答

?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

你是對(duì)的,spring嘗試重定向到“/error”,因?yàn)槟阍贑ustomAuthEntryPoint中調(diào)用了response.sendError并嘗試再次進(jìn)行身份驗(yàn)證,因此你得到另一個(gè)InsufficentAuthentication異常。解決此問(wèn)題的一種方法是使用response.setStatus(401)而不是response.sendError方法。就像這樣:


@Component

public class CustomAuthEntryPoint implements AuthenticationEntryPoint {

  @Override

  public void commence(HttpServletRequest request, HttpServletResponse response,

      AuthenticationException exception) throws IOException, ServletException {

    System.out.println("entrypoint " + exception.getClass().getName());

    response.getOutputStream().print(exception.getClass().getName());

    response.setStatus(401);

  }

}

或者,您可以從授權(quán)中排除“/error”url,但您必須小心不要泄漏該錯(cuò)誤端點(diǎn)上的敏感信息:


@Override

    protected void configure(HttpSecurity http) throws Exception {

        http

            .cors().and()

            .logout().deleteCookies("SESSION").and()

            .authorizeRequests()

                .antMatchers("/actuator/**","/error").permitAll()

                .anyRequest().authenticated().and()         

            .httpBasic().authenticationEntryPoint(customAuthEntryPoint).and()

            .csrf().disable();

    }


查看完整回答
反對(duì) 回復(fù) 2023-08-09
  • 1 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)