successHandler를 이용한 session 설정.

강석 최 2022-09-20 09:53:57 +09:00
parent debc9b46c1
commit 0b7ace50dc
2 changed files with 15 additions and 13 deletions

View File

@ -22,26 +22,16 @@ public class BaseController {
private final MenuMgtService menuMgtService; private final MenuMgtService menuMgtService;
@GetMapping("/") @GetMapping("/")
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) { public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser) {
ModelAndView mav = null; ModelAndView mav = null;
if(loginUser == null){ if(loginUser == null){
mav = new ModelAndView("redirect:/login"); mav = new ModelAndView("redirect:/login");
}else{ }else{
loginUser.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
session.setAttribute("commonCode", codeMgtService.getCommonCode());
mav = new ModelAndView("redirect:/dashboard"); mav = new ModelAndView("redirect:/dashboard");
} }
return mav; return mav;
} }
@GetMapping("/refreshSession")
public void getSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){
loginUser.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
session.setAttribute("commonCode", codeMgtService.getCommonCode());
}
@GetMapping("/login") @GetMapping("/login")
public ModelAndView goLogin() { public ModelAndView goLogin() {
ModelAndView mav = new ModelAndView("/login/login"); ModelAndView mav = new ModelAndView("/login/login");
@ -70,4 +60,10 @@ public class BaseController {
ModelAndView mav = new ModelAndView("login/dashboard"); ModelAndView mav = new ModelAndView("login/dashboard");
return mav; return mav;
} }
public void setSession(@AuthenticationPrincipal UserInfo loginUser, HttpSession session){
loginUser.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
session.setAttribute("commonCode", codeMgtService.getCommonCode());
}
} }

View File

@ -1,5 +1,6 @@
package com.dbnt.faisp.config; package com.dbnt.faisp.config;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -11,8 +12,11 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder; import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.DefaultRedirectStrategy;
import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.security.web.access.AccessDeniedHandler;
import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -22,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
@RequiredArgsConstructor @RequiredArgsConstructor
public class SecurityConfig{ public class SecurityConfig{
private final Logger log = LoggerFactory.getLogger(getClass()); private final Logger log = LoggerFactory.getLogger(getClass());
private final BaseController baseController;
@Bean @Bean
public PasswordEncoder passwordEncoder(){ public PasswordEncoder passwordEncoder(){
@ -81,16 +86,17 @@ public class SecurityConfig{
.defaultSuccessUrl("/") // 로그인 성공 시 이동 .defaultSuccessUrl("/") // 로그인 성공 시 이동
/*.failureHandler((request, response, exception) -> { /*.failureHandler((request, response, exception) -> {
}) // 로그인 실패시 동작 수행 })*/ // 로그인 실패시 동작 수행
.successHandler((request, response, authentication) -> { .successHandler((request, response, authentication) -> {
SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request,response); SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request,response);
baseController.setSession((UserInfo)authentication.getPrincipal(), request.getSession());
if(savedRequest != null){ if(savedRequest != null){
String targetUrl = savedRequest.getRedirectUrl(); String targetUrl = savedRequest.getRedirectUrl();
new DefaultRedirectStrategy().sendRedirect(request,response,targetUrl); new DefaultRedirectStrategy().sendRedirect(request,response,targetUrl);
}else{ }else{
new DefaultRedirectStrategy().sendRedirect(request,response,"/"); new DefaultRedirectStrategy().sendRedirect(request,response,"/");
} }
}) // 로그인 성공시 동작 수행.*/ }) // 로그인 성공시 동작 수행.
.and() // 로그아웃 설정 .and() // 로그아웃 설정
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")) // 로그아웃 시 URL 재정의 .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")) // 로그아웃 시 URL 재정의
.logoutSuccessUrl("/") // 로그아웃 성공 시 redirect 이동 .logoutSuccessUrl("/") // 로그아웃 성공 시 redirect 이동