로그인처리

1. 로그인 링크 설정

home.jsp 파일에 로그인 링크 추가

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@include file="./include/header.jsp"%>
<section class="content">
    <div class="box">
        <div class="box-header with-border">
            <a href="/user/register"><h3 class="box-title">회원가입</h3></a>


            <c:if test="${user==null}">
                <div class="box-header with-border">
                    <a href="user/login"><h3 class="boxtitle">로그인</h3></a>
                </div>
            </c:if>
            <c:if test="${user!=null }">
                <div class="box-header with-border">
                    <a href="user/logout"><h3 class="boxtitle">로그아웃</h3></a>
                </div>
            </c:if>


        </div>
    </div>
</section>
<%@include file="include/footer.jsp"%>

UserController 클래스에 로그인 요청이 왔을 때 로그인 페이지로 이동을 처리하는 메소드를 구현

    @RequestMapping(value = "user/login", method = RequestMethod.GET)
    public void login(Model model) {
    }

views/user 디렉토리에 login.jsp 파일을 만들고 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="../include/header.jsp"%>
<div class="container">
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <div class="login-box well">
                <form accept-charset="UTF-8" role="form" method="post" action="login">
                    <legend>로그인 </legend>
                    <div style='color: red'>${msg}</div>
                    <div class="form-group">
                        <label for="email">EMAIL</label> 
                        <input type="email" name="email" id="email" placeholder="email을 입력하세요" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="password"> 비밀번호</label> 
                        <input type="password" name="pw" id="pw" placeholder="비밀번호를 입력하세요" class="form-control" />
                    </div>
                    <div class="form-group">
                        <input type="submit" class="btn btn-primary btn-login-submit btn-block m-t-md" value="로그인" />
                    </div>
                    <div class="form-group">
                        <a href="register" class="btn btn-warning btn-block m-t-md">회원가입</a>
                    </div>
                    <div class="form-group">
                        <a href="/" class="btn btn-success btn-block m-t-md">메인으로</a>
                    </div>
                </form>
            </div>
        </div>
        <div class="col-md-4"></div>
    </div>
</div>
<%@ include file="../include/footer.jsp"%>

2. 로그인 처리

user.xml 파일에 로그인처리 sql을 생성

    <!-- 로그인 처리를 위한 sql -->
    <select id="login" resultType="User" parameterType="User">
        select email, nickname, image, pw
        from springuser
        where email=#{email}
    </select>

UserDao 클래스에 로그인 메소드를 구현

    public User login(User user) {
        return sqlSession.selectOne("user.login", user);
    }

UsreService 인터페이스에 로그인 처리 메소드를 선언

    public User login(User user);

UsreServiceImpl 클래스를 생성하고 로그인 메소드를 구현

    @Override
    public User login(User user) {
        User loginUser = userDao.login(user);
        if (loginUser != null) {
            if (BCrypt.checkpw(user.getPw(), loginUser.getPw())) {
                loginUser.setPw(null);
            } else {
                loginUser = null;
            }
        }
        return loginUser;
    }

UserController 클래스에 로그인을 처리하는 메소드를 구현

    @RequestMapping(value = "user/login", method = RequestMethod.POST)
    public String login(User user, HttpSession session, Model model, RedirectAttributes attr) {
        User userVO = userService.login(user);
        if (userVO == null) {
            attr.addFlashAttribute("msg", "없는 이메일이거나 비밀번호가 잘못되었습니다.");
            return "redirect:login";
        }
        session.setAttribute("user", userVO);
        return "redirect:/";
    }

header.jsp 파일의 메뉴 부분 수정

<body class="skin-blue sidebar-mini">
    <div class="wrapper">
        <header class="main-header">
            <div class="page-header">
                <h1>Spring MVC 게시판</h1>
            </div>
        </header>
    </div>
    <aside class="main-sidebar">
        <section class="sidebar">
            <ul class="nav nav-tabs">
                <li role="presentation" class="active"><a href="#">메인</a></li>
                <li role="presentation"><a href="#">목록보기 </a></li>
                <li role="presentation"><a href="#">게시물 쓰기 </a></li>


                <c:if test="${user == null}">
                    <li role="presentation">
                        <a href="user/register">회원가입</a></li>
                </c:if>
                <c:if test="${user != null}">
                    <li role="presentation">
                        <a href="#"> 
                            <span class="badge">
                                <img src="${pageContext.request.contextPath}/userimage/${user.image}" width="20" height="20" />
                            </span>
                                ${user.nickname}님
                        </a>
                    </li>
                </c:if>


            </ul>
        </section>
    </aside>
</body>
</html>

UserController 클래스에 로그아웃을 처리하는 메소드를 작성

    @RequestMapping(value = "user/logout", method = RequestMethod.GET)
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/";
    }

3. 세션 만료 시간 설정

web.xml 파일에 설정

    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>

results matching ""

    No results matching ""