IMG-LOGO
공지사항 :

전자정부 표준프레임워크 로그인 기능 예제

lmkfox - 2025-05-16 06:59:15 47 Views 0 Comment

전자정부 표준프레임워크 로그인 기능 예제

1. 기본 구성 개요

  • 로그인 폼: /login.do (GET)

  • 로그인 처리: /login.do (POST)

  • 로그아웃 처리: /logout.do

  • 사용자 정보는 DB에서 조회 (예: USER_TBL)


2. DB 테이블 예시 (MySQL 기준)

CREATE TABLE USER_TBL (
  USER_ID VARCHAR(50) PRIMARY KEY,
  USER_NM VARCHAR(100),
  PASSWORD VARCHAR(100)
);

샘플 사용자 추가:

INSERT INTO USER_TBL (USER_ID, USER_NM, PASSWORD)
VALUES ('testuser', '홍길동', 'test123');


3. Controller (

LoginController.java

)

@Controller
public class LoginController {

    @Resource(name = "loginService")
    private LoginService loginService;

    @RequestMapping(value = "/login.do", method = RequestMethod.GET)
    public String loginForm() {
        return "login/login";
    }

    @RequestMapping(value = "/login.do", method = RequestMethod.POST)
    public String login(
        @RequestParam("userId") String userId,
        @RequestParam("password") String password,
        HttpSession session,
        ModelMap model) {

        LoginVO user = loginService.selectUser(userId, password);

        if (user != null) {
            session.setAttribute("loginVO", user);
            return "redirect:/main.do";
        } else {
            model.addAttribute("message", "아이디 또는 비밀번호가 일치하지 않습니다.");
            return "login/login";
        }
    }

    @RequestMapping("/logout.do")
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/login.do";
    }
}


4. Service 및 구현

LoginService.java

public interface LoginService {
    LoginVO selectUser(String userId, String password) throws Exception;
}

LoginServiceImpl.java

@Service("loginService")
public class LoginServiceImpl implements LoginService {

    @Resource(name = "loginMapper")
    private LoginMapper loginMapper;

    @Override
    public LoginVO selectUser(String userId, String password) throws Exception {
        return loginMapper.selectUser(userId, password);
    }
}


5. Mapper (MyBatis 사용)

LoginMapper.java

public interface LoginMapper {
    LoginVO selectUser(@Param("userId") String userId, @Param("password") String password);
}

login-mapper.xml

<mapper namespace="loginMapper">
    <select id="selectUser" parameterType="map" resultType="LoginVO">
        SELECT USER_ID, USER_NM
        FROM USER_TBL
        WHERE USER_ID = #{userId}
          AND PASSWORD = #{password}
    </select>
</mapper>


6. VO 클래스 (

LoginVO.java

)

public class LoginVO implements Serializable {
    private String userId;
    private String userNm;

    // Getter/Setter 생략
}


7. JSP 파일 (

/webapp/WEB-INF/jsp/login/login.jsp

)

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title>로그인</title></head>
<body>
<h2>로그인 페이지</h2>

<form action="<c:url value='/login.do'/>" method="post">
    <label for="userId">아이디:</label>
    <input type="text" name="userId" required /><br/>

    <label for="password">비밀번호:</label>
    <input type="password" name="password" required /><br/>

    <button type="submit">로그인</button>
</form>

<c:if test="${not empty message}">
    <p style="color:red">${message}</p>
</c:if>

</body>
</html>


8. Dispatcher 설정 (

dispatcher-servlet.xml

)

<context:component-scan base-package="egovframework.example" />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>


9. 실행 확인

  1. Tomcat 실행

  2. http://localhost:8080/프로젝트명/login.do 접속

  3. testuser / test123 로그인 → main.do 페이지로 리다이렉트


마무리

전자정부 프레임워크 기반 로그인 시스템은 보안 요구가 높은 공공 프로젝트에서 많이 사용되며, 위의 예시는 기본 형태이므로 향후에는 다음과 같은 기능도 고려해야 합니다:

  • 비밀번호 암호화 (BCrypt 등)

  • 로그인 시도 실패 횟수 제한

  • 세션 타임아웃 설정

  • 권한/역할 기반 접근제어


댓글