티스토리 뷰

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편에서는 그 문제를 차례로 다룰 것 같다

'dev > spring boot + intelliJ' 카테고리의 다른 글

session timeout  (0) 2023.06.06
session  (0) 2023.06.06
steam() filter() 람다식 사용  (0) 2023.05.23
bean validation groups 사용 (등록과 수정이 다를 때에)  (0) 2023.05.19
bean validation, scriptAssert 사용  (0) 2023.05.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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
글 보관함