아래는 시큐리티를 위해 만든 config/SecurityConfig.java 파일이다.
@Configuration // 빈등록 (IOC관리)
@EnableWebSecurity // 시큐리티 칠터가 등록이 된다
@EnableGlobalMethodSecurity(prePostEnabled = true) // 특정 주소로 접근하면 권한 및 인증을 미리 체크하겠다는 뜻
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/auth/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm");
}
}
이 설정을 해준 뒤에 auth/loginForm
과 auth/joinForm
에 대한 페이지 요청을 하여 폼 페이지 화면(html)은 잘 응답받았지만, 폼 데이터를 넘겨 처리하게 할 자바스크립트 파일이 다운은 되었지만 실행이 불가하다(not executable)는 응답을 받았다.
이를 해결하기 위해 위 설정 클래스 파일에 아래와 같은 함수를 추가로 오버로딩 해주었다.
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/js/**");
}
js 폴더
아래의 파일들은 시큐리티 제약에서 빼주겠다는 소리
이렇게 함수를 오버라이딩한 결과 js 스크립트를 잘 실행하였다.
not executable 하다는 말이 떠서 에러 메시지 그대로 타입이type ('text/html')
이라 실행을 못시키는건가 싶었다. 그래서 스크립트에 타입을 따로 이 좀 신기했다. 왜냐하면 아예 js 다운로드도 못하게 막아놓았으면 막아놓았지 다운은 시켜놓고 여기서 실행을 못하게 한다는 것이 시큐리티 때문이라는...🤔
어쨌든, 위처럼 /js 폴더 하위의 파일들을 시큐리티 설정에서 ignoring 시킴으로써 js 파일들을 시큐리티에서 건져내어 실행시킬 수 있게 하였다!