JWT는 RFC 7519 웹 표준으로 지정되어 있고, JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이다. 가볍고 간편하며 쉽게 적용할 수 있다.
lombok 사용을 위해 Enable annotation processing에 체크해준다.
HelloController에서 /api/hello에 대한 정보
@RestController
@RequestMapping("/api")
public class HelloController {
@GetMapping("/hello")
public ResponseEntity<String> hello() {
return ResponseEntity.ok("hello");
}
}
/api/hello에 대한 요청의 권한을 어떻게 설정할지 정한다.
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests() // HttpServletRequest를 사용하는 요청들에 대한 접근제한을 설정하겠다는 의미
.antMatchers("/api/hello").permitAll() // /api/hello에 대한 요청은 인증없이 접근 허용
.anyRequest().authenticated(); // 나머지 요청들은 모두 인증되어야 함을 의미
}
}
@ManyToMany, @JoinTable
은 User객체와 Authority객체의 다대다 관계를 일대다, 다대일 관계의 조인 테이블로 정의한 것
Spring Boot가 data.sql을 찾아 쿼리를 실행하는 방법?
=> Spring Boot는 시작될 때 root classpath location에 위치한 schema.sql, data.sql 파일의 내용들을 수행하게 되어있다. 참고링크
application.yml
파일에서 defer-datasource-initialization
옵션을 true로 설정해줘야 Spring Boot시작 시 데이터베이스 초기화가 이루어진다.👀인프런 정은구 강사님의 <Spring Boot JWT Tutorial> 강의를 듣고 정리하였습니다 :)