2022 10 09 - WIYA-waitinyourarea/wiya GitHub Wiki

2022-10-09(일) 회의록

1. 스프링 시큐리티 기본 적용

  • SecurityFilterChain 필터를 빈객체로 등록
  • 해당 빈객체의 설정을통하여 인증 방법 및 인가 범위를 설정한다.
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http
                //인가 정책
                .authorizeRequests() // 요청에 대한 보안 검사
                    .antMatchers("/", "/assets/**", "/member/register", "/member").permitAll()
                    .anyRequest().authenticated() // 어떤 요청도 인가처리를 하겠다는 설정
                    .and()
                //인증 정책
                //form 로그인
                .formLogin() //formLogin 인증 방식 설정
                    .loginPage("/login").permitAll()  	// 사용자 정의 로그인 페이지
                    .defaultSuccessUrl("/")	        // 로그인 성공 후 이동 페이지
                    .failureUrl("/login?auth=fail")	// 로그인 실패 후 이동 페이지)
                    .usernameParameter("username")	// 아이디 파라미터명 설정
                    .passwordParameter("password")	// 패스워드 파라미터명 설정
                    .loginProcessingUrl("/login")       // 로그인 Form Action Url
                    .successHandler(...)		// 로그인 성공 후 핸들러
                    .failureHandler(...)		// 로그인 실패 후 핸들러
                    .and()
                //로그아웃
                .logout()
                    .logoutSuccessUrl("/")
                    .and()
                .build();
    }

2. 스프링 시큐리티 등록 시 Ajax 통신할 떄 403 에러

  • csrf의 토큰 누락으로 발생한 403 에러
  • 해결 방법
<meta name="_csrf_header" th:content="${_csrf.headerName}">
<meta name="_csrf" th:content="${_csrf.token}">
  • crsf meta 태그를 추가
var header = $("meta[name='_csrf_header']").attr('content');
var token = $("meta[name='_csrf']").attr('content');
//에이젝스에 해당 속성 추가
$.ajax({
    beforeSend: function(xhr){
        xhr.setRequestHeader(header, token);
    }
});