보안로그인 테스트 진행중

This commit is contained in:
hehihoho3@gmail.com 2024-11-22 10:58:39 +09:00
parent df208e65d8
commit aeea09e63e
7 changed files with 110 additions and 20 deletions

View File

@ -30,6 +30,8 @@ public class MberCertLoginLogVO extends UserDefaultVO{
private String loginDevice; private String loginDevice;
private String loginDt; private String loginDt;
private String secuLoginFlag;
public String getCertLoginId() { public String getCertLoginId() {
return certLoginId; return certLoginId;
@ -61,6 +63,12 @@ public class MberCertLoginLogVO extends UserDefaultVO{
public void setLoginDt(String loginDt) { public void setLoginDt(String loginDt) {
this.loginDt = loginDt; this.loginDt = loginDt;
} }
public String getSecuLoginFlag() {
return secuLoginFlag;
}
public void setSecuLoginFlag(String secuLoginFlag) {
this.secuLoginFlag = secuLoginFlag;
}

View File

@ -51,18 +51,18 @@ public class CertLoginLogServiceImpl extends EgovAbstractServiceImpl implements
public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException { public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException {
int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO); // int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO);
//
if (count > 0) { // if (count > 0) {
// 이미 존재하면 UPDATE // // 이미 존재하면 UPDATE
certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO); // certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO);
} else { // } else {
mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId()); mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId());
mberCertLoginLogVO.setLoginDevice(getDevice(request)); mberCertLoginLogVO.setLoginDevice(getDevice(request));
certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO); certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO);
} // }
} }
private String getDevice(HttpServletRequest request) { private String getDevice(HttpServletRequest request) {

View File

@ -122,7 +122,9 @@ public class CertPhoneController {
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
} }
mberCertPhoneVO.setFrstRegisterId(userId); mberCertPhoneVO.setFrstRegisterId(userId);
mberCertPhoneVO.setMberId(userId); if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
mberCertPhoneVO.setMberId(userId);
}
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO));
@ -142,8 +144,10 @@ public class CertPhoneController {
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
} }
mberCertPhoneVO.setLastUpdusrId(userId); mberCertPhoneVO.setLastUpdusrId(userId);
mberCertPhoneVO.setMberId(userId);
if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
mberCertPhoneVO.setMberId(userId);
}
return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO)); return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO));

View File

@ -2951,6 +2951,10 @@ public class EgovMypageController {
return "redirect:/web/user/login/login.do"; return "redirect:/web/user/login/login.do";
} }
// secuLoginFlag 값을 Model에 추가
model.addAttribute("secuLoginFlag", mberCertLoginLogVO.getSecuLoginFlag());
System.out.println(mberCertLoginLogVO.getSecuLoginFlag());
//로그인 권한정보 불러오기 //로그인 권한정보 불러오기
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
@ -3022,7 +3026,10 @@ public class EgovMypageController {
model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO)); model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
model.addAttribute("pageTab", "mberSecureLogin"); model.addAttribute("pageTab", "mberSecureLogin");
return "web/user/mberSecureLogin"; return "web/user/mberSecureLogin";
} }

View File

@ -18,8 +18,12 @@
COUNT(CERT_LOGIN_ID) OVER() AS totCnt COUNT(CERT_LOGIN_ID) OVER() AS totCnt
, CERT_LOGIN_ID as certLoginId , CERT_LOGIN_ID as certLoginId
, LOGIN_ID as loginId , LOGIN_ID as loginId
, LOGIN_IP as loginIp , LOGIN_IP as loginIp
, LOGIN_DEVICE as loginDevice , CASE
WHEN LOGIN_DEVICE = 'D' THEN 'PC'
WHEN LOGIN_DEVICE IN ('M', 'T') THEN '모바일'
ELSE 'PC'
END AS loginDevice
, DATE_FORMAT(LOGIN_DT,'%Y-%m-%d %T') as loginDt , DATE_FORMAT(LOGIN_DT,'%Y-%m-%d %T') as loginDt
FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP
WHERE 1=1 WHERE 1=1

View File

@ -41,6 +41,42 @@
<script> <script>
$(document).ready(function (){ $(document).ready(function (){
$(document).on('click', '#secuLoginFlag', function () {
var secuLoginFlag = "";
console.log($(this).text());
if($(this).text() == 'ON'){
secuLoginFlag = 'Y'
}
else{
secuLoginFlag = 'N'
}
// 디버깅용 출력
console.log(secuLoginFlag);
// 동적으로 form 생성
var form = $('<form>', {
action: '/web/user/mberSecureLogin.do', // 전송할 URL
method: 'POST' // POST 방식 설정
});
// form에 hidden input 추가
form.append($('<input>', {
type: 'hidden',
name: 'secuLoginFlag', // 서버에서 받을 파라미터 이름
value: secuLoginFlag // 전달할 값
}));
// form을 body에 추가 후 제출
$('body').append(form);
form.submit();
});
//세션에서 종료시간을 받아와서 타이머 실행함 //세션에서 종료시간을 받아와서 타이머 실행함
/* var timer = '${timer}'; /* var timer = '${timer}';
if(timer != ""){ if(timer != ""){
@ -824,6 +860,8 @@ function actionLogin() {
window.open(target, 'infoPop', 'width=1110, height=700, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); window.open(target, 'infoPop', 'width=1110, height=700, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1');
} }
</script> </script>
<div class="mask"></div> <div class="mask"></div>
<c:if test="${inspYn == 'Y'}"> <c:if test="${inspYn == 'Y'}">
<style> <style>

View File

@ -9,10 +9,13 @@
//보안 로그인 //보안 로그인
$(document).ready(function(){ $(document).ready(function(){
// 허용 IP 등록 // 허용 IP 등록
$(".btn_allow_ip_add").click(function () { $(".btn_allow_ip_add").click(function () {
if (confirm("현재 접속중인 IP를 접속 허용 IP로 등록하시겠습니까?")) {
var ip = $('#cennectIp').val();
if (confirm("현재 접속중인 IP["+ip+"]를 접속 허용 IP로 등록하시겠습니까?")) {
$.ajax({ $.ajax({
type: "POST", type: "POST",
@ -21,8 +24,9 @@ $(document).ready(function(){
dataType:'json', dataType:'json',
async: false, async: false,
success: function (returnData) { success: function (returnData) {
if(returnData.status == 'OK'){ if(returnData.status == 'OK'){
alert("접속 허용 IP 등록이 완료되었습니다."); alert("접속 허용 IP["+ip+"] 등록이 완료되었습니다.");
location.reload(); location.reload();
} }
else else
@ -61,7 +65,8 @@ $(document).ready(function(){
$(this).siblings("a").removeClass("on"); $(this).siblings("a").removeClass("on");
} }
} else { } else {
if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) { // if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) {
if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능합니다. 해제 시 계정정보 유출에 따른 피해가 발생할 수 있으므로 이를 권장하지 않습니다.")) {
$(this).removeClass("on"); $(this).removeClass("on");
$(this).siblings("a").addClass("on"); $(this).siblings("a").addClass("on");
} else { } else {
@ -270,6 +275,19 @@ $(document).ready(function(){
findAllCertIp(); findAllCertIp();
findAllCertPhone(); findAllCertPhone();
console.log('${mberCertLoginLogVO.secuLoginFlag}');
var secuLoginFlag = '${mberCertLoginLogVO.secuLoginFlag}';
if(secuLoginFlag == 'Y'){
console.log('????????Y')
$('#secuOffBtn').click();
}else{
console.log('????????N')
$('#secuOnBtn').click();
}
}); });
function fn_phoneSave(obj){ function fn_phoneSave(obj){
@ -491,7 +509,11 @@ function fn_PDelRow(p_mbtlnum){
//IP 삭제 //IP 삭제
function deleteRow(p_ip){ function deleteRow(p_ip){
var myIp = $('#cennectIp').val();
console.log('p_ip : ', p_ip); console.log('p_ip : ', p_ip);
var params = { var params = {
"certIp" : p_ip "certIp" : p_ip
} }
@ -506,6 +528,11 @@ function deleteRow(p_ip){
async: false, async: false,
success: function (returnData) { success: function (returnData) {
if(returnData.status == 'OK'){ if(returnData.status == 'OK'){
if(myIp == p_ip){
location.reload();
}
findAllCertIp(); findAllCertIp();
} }
else else
@ -622,7 +649,7 @@ function linkPage(pageNo){
<th>인증번호</th> <th>인증번호</th>
<td> <td>
<label for="" class="label">인증번호 입력</label> <label for="" class="label">인증번호 입력</label>
<input type="text" placeholder="인증번호 4자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 4자리 입력'" class="inputLight" style="width: 200px;"> <input type="text" placeholder="인증번호 6자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 4자리 입력'" class="inputLight" style="width: 200px;">
<button type="button" id="certConfirmBtn" class="btnType btnType6" style="width:90px">확인</button> <button type="button" id="certConfirmBtn" class="btnType btnType6" style="width:90px">확인</button>
</td> </td>
</tr> </tr>
@ -666,6 +693,7 @@ function linkPage(pageNo){
<p class="dashboard_title">보안로그인</p> <p class="dashboard_title">보안로그인</p>
<div class="title_box ip_add_wrap"> <div class="title_box ip_add_wrap">
<span>현재 접속중인 IP : <b><c:out value="${cennectIP }"/> <c:if test="${chkcertRegIP }"> [허용 IP] </c:if> </b></span> <span>현재 접속중인 IP : <b><c:out value="${cennectIP }"/> <c:if test="${chkcertRegIP }"> [허용 IP] </c:if> </b></span>
<input type="hidden" id="cennectIp" value="<c:out value="${cennectIP }"/>"/>
<c:if test="${!chkcertRegIP }"> <c:if test="${!chkcertRegIP }">
<button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button> <button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button>
</c:if> </c:if>
@ -675,9 +703,10 @@ function linkPage(pageNo){
<div class="set_area"> <div class="set_area">
<p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> <p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p>
<input type="hidden" id="secuLoginFlag" value="${secuLoginFlag}" />
<div class="tab_depth1 security_tab"> <div class="tab_depth1 security_tab">
<a href="#none">ON</a> <a href="#none" id="secuOnBtn">ON</a>
<a href="#none">OFF</a> <a href="#none" id="secuOffBtn">OFF</a>
</div> </div>
</div> </div>
</div> </div>