티스토리 뷰
권한이 제데로 설정되지 않은건가라는 물음에서 세션이 제데로 설정되어있는지 확인하였다.
오류 해결
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic().disable()
.csrf().disable()
.cors().configurationSource(corsConfigurationSource())
.and()
// .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.authorizeRequests()
.antMatchers("/", "/auth/**", "/css/**", "/js/**").permitAll()
.antMatchers("/admin/**").hasAnyRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm") // 로그인 페이지
.loginProcessingUrl("/auth/loginProc")
.defaultSuccessUrl("/")
.failureUrl("/auth/loginForm")
.and()
.addFilterBefore(new JwtAuthenticationFilter(jwtTokenProvider),
UsernamePasswordAuthenticationFilter.class);
}
무엇을 이것저것 추가하는 과정에서 JWT(Json Web Token)을 집어넣었었다.
그 중 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) 을 통해 인증정보를 서버에 담아두지 않겠다고 설정해두었다.
주석을 해제하니 정상적으로 실행이 되었다.
@GetMapping("/admin/memberList")
public String getList(Model model, HttpSession session) {
model.addAttribute("memberList", firestationService.userList());
log.info(session.getId());
return "memberList";
}
로그를 찍어보면 터미널과 브라우저에서의 Session ID가 같음을 확인 할 수 있다.
왜 세션을 이용한 접근 방식은 서버에 부담을 주는 걸까에 대해 알아보았다.
스프링 세션
서버에 유입되는 트래픽이 많아질 경우 서버를 새로 만들어야 되는데 서버 당 하나의 정보에 대해서 부여되는 세션이 다르게 되는 경우가 생긴다.
=> 스프링에서는 세션저장소를 마련해준다. 세션저장소를 만듬으로서 하나의 정보에 대한 세션을 공유하여 사용할 수 있다.
이러한 방식에 단점이 존재하는데 사용자가 요청할 시 응답하기 위해선 세션저장소에 세션을 경우마다 확인해야된다는 점이다. 그래서 세션 저장소에 조회하지 않고 인증설정을 할 수 있는 방법 중 하나가 JWT 를 이용하는 것이라고 한다.
'🌱 프로젝트 > 소방알리미' 카테고리의 다른 글
Vue Framework에서 Build 하기 - 소방서 알림 #6 (0) | 2022.09.18 |
---|---|
Firestation Spring - 소방서 알림 #5 (0) | 2022.09.17 |
로그인 오류 1 - 소방서 알림 #3 (0) | 2022.09.12 |
시큐리티 설정 - 소방서 알림 #2 (0) | 2022.09.08 |
미니 프로젝트 - 소방서알림 #1 (0) | 2022.09.06 |