시큐리티 로그인 중 로그인 요청을 해도 계속 denied 된다..
configure 에 .loginProcessingUrl 맞게 셋팅하고 요청을 보냈는데 계속 안돼서 찾아보니
csrf 문제 라는 자료를 찾음..
에러페이지를 지정했을 때 404나 405가 뜨면 csrf를 의심하자
(csrf 오류로 403이 뜨고 그 403을 처리할 에러페이지 지정 오류로 다시 404나 405가 발생할 수 있다)
해결 방법은configure 셋팅에 .and().csrf().disable(); 를 추가해줬다
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/**").permitAll() // permitAll 인증 없이 접근 가능
.and()
.formLogin()// form 로그인 인증 기능이 작동함
.loginPage("/main")// 사용자 정의 로그인 페이지, default: /login
.usernameParameter("userId")// 아이디 파라미터명 설정, default: username
.passwordParameter("userPw")// 패스워드 파라미터명 설정, default: password
.loginProcessingUrl("/login_pro_do")// 로그인 Form Action Url, default: /login
.defaultSuccessUrl("/state")// 로그인 성공 후 이동 페이지
.failureUrl("/login/fail") // 로그인에 실패하면 어느 페이지로 이동
.and()
.logout()// logout 관련 설정을 진행할 수 있도록 돕는 LogoutConfigurer<> class를 반환
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login/logout") //로그아웃 성공 시 사용자가 redirect될 url을 지정하는 메소드
.invalidateHttpSession(true)
.and()
.exceptionHandling().accessDeniedPage("/login/denied")
.and() /// 추가
.csrf().disable(); /// 추가
}