본문 바로가기

intellij +springboot/오류정리

스프링 시큐리티(Spring Security) - 로그인 로직 안됨 403 404

 

시큐리티 로그인 중 로그인 요청을 해도 계속 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();  /// 추가
    }