티스토리 뷰

LoginController

    @PostMapping("/login")
    public String login(@Valid @ModelAttribute LoginForm loginForm, BindingResult bindingResult, HttpServletResponse response){

        if(bindingResult.hasErrors()){
            return "login/loginForm";
        }
        Member member = loginService.login(loginForm.getLoginId(), loginForm.getPassword());

        if(member == null) {
            bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다.");
            return "login/loginForm";
        }
		
        //쿠키에 시간 정보를 주지 않으면 세션쿠키가 된다.
        Cookie cookie = new Cookie("loginId",String.valueOf(member.getId()));
        response.addCookie(cookie);

        return "redirect:/";
    }
    
        @PostMapping("/logout")
    public String logout(HttpServletResponse response){
        expireCookie(response,"loginId");

        return "redirect:/";
    }

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

 

HomeController

    @GetMapping("/")
    public String homeLogin(@CookieValue(name="loginId" , required = false)Long loginId, Model model){

        if(loginId == null){
            return "home";
        }

        Member member = (Member)memberRepository.findById(loginId);

        if(member == null){
            return "home";
        }

        model.addAttribute("member",member);

        return "homelogin";
    }

 

하지만 이런 식으로 쿠키를 사용하면 아주 큰 보안 문제가 있다고 한다. 2편에서는 그 문제를 차례로 다룰 것 같다

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함