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;
@GetMapping("/")
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser, HttpSession session) {
public ModelAndView loginCheck(@AuthenticationPrincipal UserInfo loginUser) {
ModelAndView mav = null;
if(loginUser == null){
mav = new ModelAndView("redirect:/login");
}else{
loginUser.setOrganCdList(organConfigService.selectOrganListWhereUserOgCd(loginUser.getOgCd()));
session.setAttribute("menuList", menuMgtService.selectAccessMenuListWhereUserSeq(loginUser.getUserSeq()));
session.setAttribute("commonCode", codeMgtService.getCommonCode());
mav = new ModelAndView("redirect:/dashboard");
}
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")
public ModelAndView goLogin() {
ModelAndView mav = new ModelAndView("/login/login");
@ -70,4 +60,10 @@ public class BaseController {
ModelAndView mav = new ModelAndView("login/dashboard");
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;
import com.dbnt.faisp.userInfo.model.UserInfo;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
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.Pbkdf2PasswordEncoder;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.security.web.DefaultRedirectStrategy;
import org.springframework.security.web.SecurityFilterChain;
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 javax.servlet.http.HttpServletResponse;
@ -22,6 +26,7 @@ import javax.servlet.http.HttpServletResponse;
@RequiredArgsConstructor
public class SecurityConfig{
private final Logger log = LoggerFactory.getLogger(getClass());
private final BaseController baseController;
@Bean
public PasswordEncoder passwordEncoder(){
@ -81,16 +86,17 @@ public class SecurityConfig{
.defaultSuccessUrl("/") // 로그인 성공 시 이동
/*.failureHandler((request, response, exception) -> {
}) // 로그인 실패시 동작 수행
})*/ // 로그인 실패시 동작 수행
.successHandler((request, response, authentication) -> {
SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request,response);
baseController.setSession((UserInfo)authentication.getPrincipal(), request.getSession());
if(savedRequest != null){
String targetUrl = savedRequest.getRedirectUrl();
new DefaultRedirectStrategy().sendRedirect(request,response,targetUrl);
}else{
new DefaultRedirectStrategy().sendRedirect(request,response,"/");
}
}) // 로그인 성공시 동작 수행.*/
}) // 로그인 성공시 동작 수행.
.and() // 로그아웃 설정
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")) // 로그아웃 시 URL 재정의
.logoutSuccessUrl("/") // 로그아웃 성공 시 redirect 이동