BACKEND/스프링 Spring

Spring MVC 스프링 세션 로그인, 로그아웃

꾸준히개발하자 2023. 12. 19. 16:24

 

Spring MVC를 사용하며, 기본적인 컨트롤러, 서비스, 모델 및 JSP 뷰 파일로 구성됩니다.

 

1. 회원 모델 (User)

먼저 사용자 정보를 저장할 모델 클래스를 생성합니다.

 

public class User {
    private String username;
    private String password;

    // 기본 생성자, getter, setter 생략
}

 

2. 회원 서비스 (UserService)

간단한 회원 서비스 구현입니다. 실제 애플리케이션에서는 데이터베이스 연동이 필요합니다.

 

public class UserService {
    public User login(String username, String password) {
        // 로그인 로직 구현, 예시를 위해 간단하게 처리
        if ("admin".equals(username) && "password".equals(password)) {
            return new User(username, password);
        }
        return null;
    }
}

 

 

3. 회원 컨트롤러 (UserController)

사용자 요청을 처리하는 컨트롤러입니다.

 

import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public String login(String username, String password, HttpSession session) {
        User user = userService.login(username, password);
        if (user != null) {
            session.setAttribute("loggedInUser", user);
            return "redirect:/home";
        }
        return "login";
    }
}

4. JSP 뷰 파일

로그인 상태에 따라 다른 콘텐츠를 표시하는 JSP 파일입니다.

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
    <title>Home</title>
</head>
<body>
    <c:choose>
        <c:when test="${not empty sessionScope.loggedInUser}">
            <p>Welcome, ${sessionScope.loggedInUser.username}!</p>
            <a href="/logout">Logout</a>
        </c:when>
        <c:otherwise>
            <a href="/login">Login</a>
        </c:otherwise>
    </c:choose>
</body>
</html>

 

  • 로그인 컨트롤러 (login 메소드): 사용자가 로그인 폼에서 입력한 정보를 받아서 UserService를 통해 사용자를 인증합니다. 인증 성공 시, 사용자 정보를 세션에 저장합니다.
  • JSP 뷰: <c:choose>, <c:when>, <c:otherwise> 태그를 사용하여 세션에 loggedInUser 객체가 존재하는지 여부에 따라 다른 콘텐츠를 표시합니다.