Merge branch 'JIWOO' into advc

This commit is contained in:
jiwoo 2023-10-19 17:18:36 +09:00
commit 69f72a339c
3 changed files with 98 additions and 10 deletions

View File

@ -117,7 +117,8 @@ public class APILoginContoller {
resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority());
}
resultVO.setUrl(returnUrl);
request.getSession().setAttribute("APILoginVO", resultVO); // LoginVO세션 생성
request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성
request.getSession().setAttribute("SSOLoginVO", resultVO); // SSOLogin세션 사용 유지
UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter();
ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
@ -228,21 +229,22 @@ public class APILoginContoller {
Map<String, String> response = new HashMap<>();
try {
loginVO = loginService.selectOffeduMberChk(loginVO);
System.out.println("@@@찾교api - ID :"+loginVO.getId()+"key:"+loginVO.getKey());
if(loginVO != null) {
response.put("result_code", "1");
response.put("message", "");
System.out.println("@@@찾교api - ID :"+loginVO.getId()+"key:"+loginVO.getKey());
loginService.updateMberSeqKeyNull(loginVO);
}else {
response.put("result_code", "-1");
response.put("message", "인증오류입니다.");
}
//찾교 mber_seq key 파기
System.out.println("@@@@@찾교 key 파기@@@@@@@@@@");
loginService.updateMberSeqKeyNull(loginVO);
return ResponseEntity.ok(response);
}catch (Exception e) {
response.put("result_code", "error");
response.put("message", "Internal Server Error: " + e.getMessage());
//response.put("message", "Internal Server Error: " + e.getMessage());
response.put("message", "오류발생");
return ResponseEntity.ok(response);
// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
}
@ -289,4 +291,88 @@ public class APILoginContoller {
}
}
/**
로그인 세션 테스트용
*/
@RequestMapping(value = "/web/chkloginKeyForOffeduTest.do")
public String chkloginKeyForOffeduTest(RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response,HttpSession session) throws Exception {
String userId = request.getParameter("user_id");
String key = request.getParameter("key");
//String returnUrl = paramRequest.get("returnUrl"); //e-배움터 문의결과 returnUrl 컨트롤은 불가능하다고
String returnUrl = "";
//테스트를 위한 선언
/*userId = "std02@forwiz.com";
key = "std02@forwiz.comxpnBtqsev3nh9mryXRdL9QRSR72XuNc08ese5iXHb0Waq1dMnSdkHHqKCgoSFeyH.amV1c19kb21haW4vTE1T";
returnUrl = "/web/main/mainPage.do";*/
if(StringUtils.isEmpty(userId) || StringUtils.isEmpty(key)) {
return "redirect:/web/main/mainPage.do";
}
Map<String, String> result = loginKeytoEEdu(userId, key);
String resultCode = "1";
String message = "성공";
userId = "test@naver.com";
if(resultCode.equals("1")) { //API 성공
System.out.println("@@@@@@@@@@API성공@@@@@@@@");
returnUrl = "/web/main/mainPage.do";//임시 url
//회원테이블에 없던 회원이면 insert, 있던 회원이면 update
UserManageVO userManageVO = new UserManageVO();
userManageVO.setMberId(userId);
UserManageVO userManageChk = userManageService.selectOffeduUser(userManageVO);
if(userManageChk == null) {
userManageVO.setAuthorCode("ROLE_USER_MEMBER");
userManageService.insertOffeduUser(userManageVO);
System.out.println("@@@@@@@@@@찾교에 계정생성@@@@@@@@@@");
}
//로그인 처리 시작
LoginVO loginVO = new LoginVO();
loginVO.setId(userId);
loginVO.setPassword("1"); //사용자 로그인만 처리함으로 password 1고정
loginVO.setUserSe("GNR");
loginVO.setIp(EgovClntInfo.getClntIP(request));
LoginVO resultVO = loginService.APIActionLogin(loginVO);
if (loginService.getUserAuth(resultVO) != null) {
resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority());
}
resultVO.setUrl(returnUrl);
request.getSession().setAttribute("LoginVO", resultVO); // LoginVO세션 생성
UsernamePasswordAuthenticationFilter springSecurity = new UsernamePasswordAuthenticationFilter();
ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
if (beans.size() > 0) {
springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0];
springSecurity.setUsernameParameter("egov_security_username");
springSecurity.setPasswordParameter("egov_security_password");
springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST"));
} else {
throw new IllegalStateException("No AuthenticationProcessingFilter");
}
springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null);
//doFilter 처리 redirect가 불가능하여, context-security.xml에서 login url로 이동 redirect 처리
System.out.println("@@@@@@@@@@@@@@로그인 처리 완료@@@@@@@@@@@");
return "blank";
}else if(resultCode.equals("-101")) { //세션 만료
redirectAttributes.addFlashAttribute("message", message);
returnUrl = "/web/main/mainPage.do";
return "redirect:" + returnUrl;
}else if(resultCode.equals("-102")) { //회원정보 확인불가
redirectAttributes.addFlashAttribute("message", message);
returnUrl = "/web/main/mainPage.do";
return "redirect:" + returnUrl;
}else if(resultCode.equals("-1")) { //API 통신 오류
redirectAttributes.addFlashAttribute("message", message);
returnUrl = "/web/main/mainPage.do";
return "redirect:" + returnUrl;
}else { // 없는 오류
redirectAttributes.addFlashAttribute("message", message);
returnUrl = "/web/main/mainPage.do";
return "redirect:" + returnUrl;
}
}
}

View File

@ -1588,10 +1588,12 @@ public class EgovLoginController {
// e-배움터 연동 로그인 - LoginVO 세션의 return url로 이동
try {
LoginVO eEduLoginVO = (LoginVO) session.getAttribute("APILoginVO");
if(eEduLoginVO.getUrl() != null) {
return "redirect:" + eEduLoginVO.getUrl();
}
LoginVO eEduLoginVO = (LoginVO) session.getAttribute("LoginVO");
if(eEduLoginVO != null) {
if(eEduLoginVO.getUrl() != null) {
return "redirect:" + eEduLoginVO.getUrl();
}
}
}catch(Exception ex) {
ex.printStackTrace();
}

View File

@ -53,14 +53,14 @@
<!-- 찾교시스템 SSO Valid 필터 -->
<!-- 필터 순서에 유의 -->
<filter>
<!-- <filter>
<filter-name>kccadrLoginValidFilter</filter-name>
<filter-class>kcc.let.uat.uia.web.SSOValid</filter-class>
</filter>
<filter-mapping>
<filter-name>kccadrLoginValidFilter</filter-name>
<url-pattern>/web/*</url-pattern>
</filter-mapping>
</filter-mapping> -->
<!-- site mesh -->