TIL(23-01-04)

allnight5·2023년 1월 4일
0

TIL

목록 보기
31/55

@PathVariable 과@RequestParam
@PathVariable 과@RequestParam를 사용하는 상황과
사용방법 @PostMapping이나 @GetMapping을 사용하는이유에 대해서 알았다.
@PathVariable
한페이지를 보여주는것다른말로는 그 페이지내에서 다른페이지로 이동할 때 사용한다.
@RequestParam
한페이지내에서 페이지 내에서 내용을 검색해서 들어가는 것이다.
페이지는 그대로 이지만 그안에 내용이 변경될 때

시큐리티를 동작시켜주는 @AuthenticationPrincipal 어노테이션
AuthenticationPrincipal는
SecurityContextHolder.getContext().getAuthentication().getPrincipal()라고 간단히 생각할수도있다.

AuthenticationPrincipalArgumentResolver가 @AuthenticationPrincipal가 파라미터로 되어있는 부분을 찾아서 SecurityContextHolder의 getContext() 메소드를 통해 SecurityContext 객체를 얻고 그 안의 getAuthentication() 메소드를 통해 Authentication (인증객체)를 얻게 될 것입니다

하지만!!

UserDetails를 상속하여 내용을 구현한 클래스를 활용하여 Authentication에 데이터를 넣어주지 않는다면 항상 null값을가져오게 될것이다.

시큐리티 Authentication에 값을 넣어주는 UserDetails 인터페이스와 그 구현체
UserDetails 란?
Spring Security에서 사용자의 정보를 담는 인터페이스이다.
Spring Security가 개발자 대신에 내부적으로 사용자 정보를 알 수 있도록 UserDetails 인터페이스를 상속받아서 스프링 시큐리티가 필요한 정보들을 구현해야한다.

UserDetailsService 란?
Spring Security에서 유저의 정보를 가져오는 인터페이스이다.
소스코드의 설명으로는.. userRepository나 유저정보DB와 통신하여 들어온username이나 중복이 없는데이터를 기준으로 정보를 검색해 가져와 있다면 그 값을 반환해준다.

시큐리티 권한을 줘서 페이지권한마다 접속제한을 해주는 GrantedAuthority
인터페이스와 같은 Spring Security의 개념과 구현은 액세스 권한을 부여 / 제어하는 권한을 얻습니다. Serializable를 상속받아 사용한다.
high-level authority라고 부르는 이유는, 어플리케이션 전반에 걸친 권한이기 때문이다. 따라서 특정 도메인에 특화된 권한을 의미하지는 않는다.

중요!

권한을 넣어준다고 끝이아니다
이제 SecurityFilterChain나 시큐리티 설정 메소드를 구현하여 설정을 하여 권한에 맞는곳에만 들어갈수있도록 해주어야 GrantedAuthority를 이용하여 넣어준 의미가 있다.

profile
공부기록하기

0개의 댓글