====== 접속로그관리 ======
===== 개요 =====
**접속로그관리**는 사용자가 시스템 로그인/아웃한 로그를 검색, 조회하는 기능을 제공한다.
===== 설명 =====
접속로그관리는 **로그인 패키지(egovframework-certlogin-2.0.0.zip)** 설치 후에 사용이 가능하다. \\
(단독 설치 후 실행 시 에러발생)
**접속로그관리**는 로그인로그의 **등록, 조회, 목록**의 기능을 수반한다.
① 접속로그등록 : 로그인로그정보를 등록한다. - AOP 기능을 이용
② 접속로그조회 : 로그인로그정보의 상세내용을 조회한다.
③ 접속로그목록 : 로그인로그정보의 목록을 검색, 조회한다.
==== 패키지 참조 관계 ====
접속로그관리 패키지는 요소기술의 공통(cmm) 패키지에 대해서만 직접적인 함수적 참조 관계를 가진다. 하지만, 컴포넌트 배포 시 오류 없이 실행되기 위하여 패키지 간의 참조관계에 따라 달력 패키지와 함께 배포 파일을 구성한다.
* 패키지 간 참조 관계 : [[egovframework:com:v2:init_pkg_dependency#시스템관리|시스템관리 Package Dependency]]
==== 관련소스 ====
^유형^대상소스명^비고^
|Controller|egovframework.com.sym.log.clg.web.EgovLoginLogController.java|접속로그 관리를 위한 컨트롤러 클래스|
|Service|egovframework.com.sym.log.clg.service.EgovLoginLogService.java|접속로그 관리를 위한 서비스 인터페이스|
|ServiceImpl|egovframework.com.sym.log.clg.service.impl.EgovLoginLogServiceImpl.java|접속로그 관리를 위한 서비스 구현 클래스|
|Model|egovframework.com.sym.log.clg.service.LoginLog.java|접속로그 관리를 위한 VO 클래스|
|DAO|egovframework.com.sym.log.clg.service.impl.LoginLogDAO.java|접속로그 관리를 위한 데이터처리 클래스|
|Aspect|egovframework.com.sym.log.clg.service.EgovLoginLogAspect.java|접속로그 등록을 위한 Aspect 클래스|
|JSP|/WEB-INF/jsp/egovframework/com/sym/log/clg/EgovLoginLogList.jsp|접속로그 목록을 위한 jsp페이지|
|JSP|/WEB-INF/jsp/egovframework/com/sym/log/clg/EgovLoginLogInqire.jsp|접속로그 조회를 위한 jsp페이지|
|QUERY XML|resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Mysql.xml|접속로그 관리 MySQL용 QUERY XML|
|QUERY XML|resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Oracle.xml|접속로그 관리 Oracle용 QUERY XML|
|QUERY XML|resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Tibero.xml|접속로그 관리 Tibero용 QUERY XML|
|QUERY XML|resources/egovframework/sqlmap/com/sym/log/clg/EgovLoginLog_SQL_Altibase.xml|접속로그 관리 Altibase용 QUERY XML|
|Idgen XML|resources/egovframework/spring/context-idgen.xml|접속로그 관리 Id생성 Idgen XML|
==== 클래스 다이어그램 ====
{{:egovframework:com:v2:sym:접속로그관리_클래스다이어그램.jpg?740|}}
==== ID Generation ====
=== ID Generation 관련 DDL 및 DML ===
* ID Generation Service를 활용하기 위해서 Sequence 저장테이블인 COMTECOPSEQ에 **LOGINLOG_ID** 항목을 추가한다.
CREATE TABLE COMTECOPSEQ ( table_name varchar(16) NOT NULL,
next_id DECIMAL(30) NOT NULL,
PRIMARY KEY (table_name));
INSERT INTO COMTECOPSEQ VALUES('LOGINLOG_ID','0');
=== ID Generation 환경설정(context-idgen.xml) ===
==== 관련 테이블 ====
^테이블명^테이블명(영문)^비고^
|접속로그|COMTNLOGINLOG|로그인로그 정보를 관리한다.|
==== AOP ====
=== egov-com-loginaop.xml ===
시스템로그 등록 기능구현을 위하여 [[egovframework:rte:fdl:aop|AOP]]를 설정한다.
* 시스템로그 등록 기능구현을 위하여 EgovLogManageAspect 클래스를 생성한다.
package egovframework.com.sym.log.clg.service;
import javax.annotation.Resource;
import egovframework.com.cmm.LoginVO;
import egovframework.com.cmm.util.EgovUserDetailsHelper;
public class EgovLoginLogAspect {
@Resource(name="EgovLoginLogService")
private EgovLoginLogService loginLogService;
/**
* 로그인 로그정보를 생성한다.
* EgovLoginController.actionMain Method
*
* @param
* @return void
* @throws Exception
*/
public void logLogin() throws Throwable {
String uniqId = "";
String ip = "";
/* Authenticated */
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if(isAuthenticated.booleanValue()) {
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
uniqId = user.getUniqId();
ip = user.getIp();
}
LoginLog loginLog = new LoginLog();
loginLog.setLoginId(uniqId);
loginLog.setLoginIp(ip);
loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLogService.logInsertLoginLog(loginLog);
}
/**
* 로그아웃 로그정보를 생성한다.
* EgovLoginController.actionLogout Method
*
* @param
* @return void
* @throws Exception
*/
public void logLogout() throws Throwable {
String uniqId = "";
String ip = "";
/* Authenticated */
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if(isAuthenticated.booleanValue()) {
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
uniqId = user.getUniqId();
ip = user.getIp();
}
LoginLog loginLog = new LoginLog();
loginLog.setLoginId(uniqId);
loginLog.setLoginIp(ip);
loginLog.setLoginMthd("O"); // 로그인:I, 로그아웃:O
loginLog.setErrOccrrAt("N");
loginLog.setErrorCode("");
loginLogService.logInsertLoginLog(loginLog);
}
}
===== 관련기능 =====
접속로그관리는 **접속로그 목록조회**, **접속로그 상세조회** 기능으로 구분된다.
==== 접속로그 목록조회 ====
=== 비즈니스 규칙 ===
로그인로그 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다. 검색조건은 발생일자와 로그유형에 대해서 수행된다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|목록조회|/sym/log/clg/SelectLoginLogList.do|selectLoginLogInf|"LoginLogDAO.selectLoginLogInf",|
| | | |"LoginLogDAO.selectLoginLogInfCnt"|
{{:egovframework:com::sym:log:EgovLoginLogList.jpg|}}
로그인로그 상세조회 기능을 수행하기 위해서는 **상세보기** 버튼을 클릭한다.
==== 접속로그 상세조회 ====
=== 비즈니스 규칙 ===
로그인로그 상세조회는 팝업창으로 구성되며, **닫기** 버튼을 클릭하면 창을 닫는다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행메뉴얼 ===
^Action^URL^Controller method^QueryID^
|상세조회|/sym/log/clg/InqireLoginLog.do|selectLoginLog|"LoginLogDAO.selectLoginLog"|
{{:egovframework:com::sym:log:EgovLoginLogInqire.jpg|}}
===== 참고자료 =====
* 실행환경 참조 : [[egovframework:rte:fdl:aop|AOP]]
* 실행환경 참조 : [[egovframework:rte:fdl:id_generation|ID Generation]]