义齿
バージョン:
spring security 2.1.0.RELEASE
状況の構成:
インタフェースに注記が追加されました.
WebSecurityConfigurerAdapterでコードが構成されています.
アクセスインタフェース:/hello 0、エラーにアクセスできないことを報告し、設定を実行していないaccessDeniedHandler
理由:@PreAuthorize注記の異常は、AccessDeniedException異常を放出し、accessDeniedHandlerに捕獲されず、グローバル異常に捕獲されます.
サンプルコード:
accessDeniedHandlerによって処理をキャプチャする必要がある場合は、コードをこのように書く必要があります.
spring security 2.1.0.RELEASE
状況の構成:
インタフェースに注記が追加されました.
@PreAuthorize("hasRole('ROLE_AAA')")
@RequestMapping("/hello0")
public String hello(){
return "HELLO";
}
WebSecurityConfigurerAdapterでコードが構成されています.
http.exceptionHandling()
.authenticationEntryPoint(this.securityAuthenticateFailureHandler)
.accessDeniedHandler(this.securityAccessDeniedHandler);
http.cors().and()
// URL
.anyRequest().authenticated();
アクセスインタフェース:/hello 0、エラーにアクセスできないことを報告し、設定を実行していないaccessDeniedHandler
理由:@PreAuthorize注記の異常は、AccessDeniedException異常を放出し、accessDeniedHandlerに捕獲されず、グローバル異常に捕獲されます.
サンプルコード:
@RestControllerAdvice
public class GlobalExceptionHandler {
//
@ExceptionHandler(AccessDeniedException.class)
public BaseResponse handleAccessDeniedException(AccessDeniedException e){
return BaseResponse.failure(403, " ");
}
}
accessDeniedHandlerによって処理をキャプチャする必要がある場合は、コードをこのように書く必要があります.
http.cors().and()
.authorizeRequests().antMatchers("/hello0").permitAll()
hasRole , ,
accessDeniedHandler ,
.antMatchers("/hello0").hasRole("AAA")
.anyRequest().authenticated();