보안로그인 테스트 진행중

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 loginDt;
private String secuLoginFlag;
public String getCertLoginId() {
return certLoginId;
@ -61,6 +63,12 @@ public class MberCertLoginLogVO extends UserDefaultVO{
public void setLoginDt(String 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 {
int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO);
if (count > 0) {
// 이미 존재하면 UPDATE
certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO);
} else {
// int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO);
//
// if (count > 0) {
// // 이미 존재하면 UPDATE
// certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO);
// } else {
mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId());
mberCertLoginLogVO.setLoginDevice(getDevice(request));
certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO);
}
// }
}
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()));
}
mberCertPhoneVO.setFrstRegisterId(userId);
mberCertPhoneVO.setMberId(userId);
if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
mberCertPhoneVO.setMberId(userId);
}
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()));
}
mberCertPhoneVO.setLastUpdusrId(userId);
mberCertPhoneVO.setMberId(userId);
if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
mberCertPhoneVO.setMberId(userId);
}
return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO));

View File

@ -2951,6 +2951,10 @@ public class EgovMypageController {
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());
@ -3022,7 +3026,10 @@ public class EgovMypageController {
model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
model.addAttribute("pageTab", "mberSecureLogin");
model.addAttribute("pageTab", "mberSecureLogin");
return "web/user/mberSecureLogin";
}

View File

@ -18,8 +18,12 @@
COUNT(CERT_LOGIN_ID) OVER() AS totCnt
, CERT_LOGIN_ID as certLoginId
, LOGIN_ID as loginId
, LOGIN_IP as loginIp
, LOGIN_DEVICE as loginDevice
, LOGIN_IP as loginIp
, 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
FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP
WHERE 1=1

View File

@ -41,6 +41,42 @@
<script>
$(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}';
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');
}
</script>
<div class="mask"></div>
<c:if test="${inspYn == 'Y'}">
<style>

View File

@ -9,10 +9,13 @@
//보안 로그인
$(document).ready(function(){
// 허용 IP 등록
$(".btn_allow_ip_add").click(function () {
if (confirm("현재 접속중인 IP를 접속 허용 IP로 등록하시겠습니까?")) {
var ip = $('#cennectIp').val();
if (confirm("현재 접속중인 IP["+ip+"]를 접속 허용 IP로 등록하시겠습니까?")) {
$.ajax({
type: "POST",
@ -21,8 +24,9 @@ $(document).ready(function(){
dataType:'json',
async: false,
success: function (returnData) {
if(returnData.status == 'OK'){
alert("접속 허용 IP 등록이 완료되었습니다.");
alert("접속 허용 IP["+ip+"] 등록이 완료되었습니다.");
location.reload();
}
else
@ -61,7 +65,8 @@ $(document).ready(function(){
$(this).siblings("a").removeClass("on");
}
} else {
if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) {
// if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) {
if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능합니다. 해제 시 계정정보 유출에 따른 피해가 발생할 수 있으므로 이를 권장하지 않습니다.")) {
$(this).removeClass("on");
$(this).siblings("a").addClass("on");
} else {
@ -270,6 +275,19 @@ $(document).ready(function(){
findAllCertIp();
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){
@ -491,7 +509,11 @@ function fn_PDelRow(p_mbtlnum){
//IP 삭제
function deleteRow(p_ip){
var myIp = $('#cennectIp').val();
console.log('p_ip : ', p_ip);
var params = {
"certIp" : p_ip
}
@ -506,6 +528,11 @@ function deleteRow(p_ip){
async: false,
success: function (returnData) {
if(returnData.status == 'OK'){
if(myIp == p_ip){
location.reload();
}
findAllCertIp();
}
else
@ -622,7 +649,7 @@ function linkPage(pageNo){
<th>인증번호</th>
<td>
<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>
</td>
</tr>
@ -666,6 +693,7 @@ function linkPage(pageNo){
<p class="dashboard_title">보안로그인</p>
<div class="title_box ip_add_wrap">
<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 }">
<button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button>
</c:if>
@ -675,9 +703,10 @@ function linkPage(pageNo){
<div class="set_area">
<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">
<a href="#none">ON</a>
<a href="#none">OFF</a>
<a href="#none" id="secuOnBtn">ON</a>
<a href="#none" id="secuOffBtn">OFF</a>
</div>
</div>
</div>