인증 내용을 단순하게 받아오는 방법은 크게 3가지를 생각해 볼 수 있다.
@RequestParam
으로 받아서 검증하는 방법// WebMvcConfig.java implements WebMvcConfigurer
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor())
.excludePathPatterns("/error", "/favicon.ico");
}
request.setAttribute("userName", accessToken);
@RequestAtrribute
어노테이션으로 받아올 수 있다.@Override
public boolean supportsParameter(MethodParameter parameter) {
// UserSession 이라는 dto 클래스를 받는 Controller 메서드에 적용할 것인지 확인.
return parameter.getParameterType().equals(UserSession.class);
}
@GetMapping("/foo")
public Long foo(UserSession userSession) {
log.info(">>>{}", userSession.id);
return userSession.id;
}
// WebMvcConfig.java implements WebMvcConfigurer
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(new AuthResolver(sessionRepository));
}
Intellij에서 http request를 보낼 수 있는 도구가 있음.
.http 파일을 만들어서 http request 값 설정 가능.
### 로그인
POST http://localhost:8080/auth/login
Content-Type: application/json
{
"email": "lucaschoi@gmail.com",
"password": "asdf"
}
### 인증 페이지 요청
GET http://localhost:8080/foo
Content-Type: application/json
Cookie: SESSION=4a27ab97-a5e0-4495-8805-958a49816dd5
변수화 하는 방법도 조사해보기.
http://{{baseUrl}}
와 같이 local 환경에서 baseUrl 변수에 대해 지정해 줄 수 있다.{
"local":{
"baseUrl":"localhost:8080"
},
"dev":{
"host":"dev.sample.com"
},
"real":{
"host":"sample.com"
}
}
GET {{baseUrl}}/foo
,POST {{baseUrl}}/auth/login
와 같이 변수화 진행할 수 있다.Chrome extension 을 이용해서 Header 값을 설정하는 방법도 있고, Postman, curl을 이용하는 방법도 있음.