클라이언트가 userName이나 password외에 또다른 추가정보를 보낼때 그것을 저장하는 방법이다.
AuthenticationDetailsSource에 의해 webAuthetnticationDetails가 생성되며 이곳에 추가 데이터들이 저장되고 이것은 Authentication 안에있는 detail이라는 클래스에 저장된다.
web은 request라는 객체를 통해서 추가정보 저장
Authentication -setDetails -> authenticationDetailsSource-> webAuthenticationDetails 순서로 진행됀다.
추가적인 데이터를 실질적으로 저장하는곳
그곳을 생성하는 곳
config에 추가
인증은 성공했지만 권한부족으로 인한 인가 예외가 일어날 경우
FilterIntercepter에서 인증,인가 예외 처리 ->예외 발생시 ExceptionTranslationFilter 안에서 예외 처리함.
ExceptionTranslationFilter 안에있는 AccessDeniedHandler을 구현해보자
controller의 url을 호출하는 코드이다.
인증한 계정의 userName과 accessDeniedHanlder에서 보낸 exception 내용을 view단으로 전달 한다.
SpringSecurity가 우리가만든 accessDeniedHanlder를 사용하도록 config에 설정 해준다.