BJSNuruhee / levelup

0 stars 0 forks source link

[Spring] Cookie 설정 #28

Closed yejun95 closed 10 months ago

yejun95 commented 10 months ago

Spring cookie 설정

개념

image



✔ controller

    // 쿠키 로그인 기능 구현
    @PostMapping("/post/user/cookieLogin")
    public String memCookieLogin(@RequestBody User vo, HttpServletResponse response) {
        User mvo = userMapper.memLogin(vo);
        if(mvo != null) { // 로그인 성공
            //쿠키에 시간 정보를 주지 않으면 세션 쿠키가 된다. (브라우저 종료시 모두 종료)
            Cookie cookie = new Cookie("memId", String.valueOf(vo.getUserId()));
            cookie.setMaxAge(60 * 60); // 1시간
            response.addCookie(cookie);
            return "good";
        } else { // 로그인 실패
            return "bad";
        }
    }

    // 쿠키 로그아웃
    @PostMapping("/post/user/cookieLogout")
    public String memCookieLogout(HttpServletResponse response) {
        expiredCookie(response, "memId");
        return "1";
    }

    private void expiredCookie(HttpServletResponse response, String cookieName) {
        Cookie cookie = new Cookie(cookieName, null);
        cookie.setMaxAge(0);
        response.addCookie(cookie);
    }

로그아웃

✔ Mapper.java

@Mapper
public interface UserMapper {
    public User memLogin(User vo); // 로그인 체크
}

✔ Mapper.xml

    <select id="memLogin" parameterType="com.example.demo.entity.User" resultType="com.example.demo.entity.User">
        select * from tb_user
        where USER_ID = #{userId} and USER_PW = #{userPw}
    </select>

✔ cookie 확인

image

로그아웃

image

image



✔ 서버에서 쿠키 조회하기

@GetMapping("/")
public String homeLogin(@CookieValue(name = "memberId", required = false) Long memberId, Model model) {
    if (memberId == null) {
        return "home";
    }

    Member loginMember = memberRepository.findById(memberId);
    if (loginMember == null) {
        return "home";
    }

    model.addAttribute("member", loginMember);
    return "loginHome";
}

✔ 쿠키 파일 위치

image

Reference

Catsbi's DLog : 로그인 처리 1 - 쿠키, 세션