자바 공부/스프링공부

Jpa를 이용하여 게시판 만들어 보기 2

ari0930 2024. 8. 8. 21:57

Jpa를 이용하여 게시판 만들어 보기 2 

로그인/로그아웃

 

로그인 실패

아이디가 없는 경우
비밀 번호가 틀린경우

 

로그인 성공 시

로그인을 성공하면 이렇게 로그아웃 버튼이 생긴다

 

로그인 컨트롤러 코드

    @PostMapping("/loginCheck")
    public String loginOk(UserVo userVo, RedirectAttributes redirectAttributes, HttpSession session) {
        int loginResult = userService.loginOk(userVo,session);
        if (loginResult == 1) {
            //세션 방식으로 로그인 정보 저장

            return "redirect:/user"; // 로그인 성공 시 /home으로 리다이렉트
        } else if (loginResult == 2) {
            System.out.println("비번 틀림");
            redirectAttributes.addFlashAttribute("error", "Invalid password.");
            return "redirect:/user/login"; // 비밀번호가 틀린 경우
        } else {
            redirectAttributes.addFlashAttribute("error", "User not found.");
            return "redirect:/user/login"; // 유저 정보가 없는 경우
        }
    }

로그인 서비스 코드

    public int loginOk(UserVo userVo, HttpSession session){
        String id= userVo.getId();
        Users users=userRepository.findById(id);

        if (users == null) {
            return 3; // 유저 정보가 없는 경우
        }

        if (userVo.getPw().equals(users.getPw())) {
            session.setAttribute("userInfo",users);
            session.setMaxInactiveInterval(60*30);

            System.out.println("로그인 성공");
            return 1; // 로그인 성공
        } else {
            return 2; // 비밀번호가 틀린 경우
        }

로그인 시도 시 ID로 그 아이디와 같은 , USER을 찾는다 만약 USER이 존재하고 비밀 번호가 같다면 

userInfo라는 세션을 만들어 그 안에 유저 정보를 담고 리턴값을 1을 준다

만약 비밀 번호가 틀릴 경우 이턴값으 2 , 유저 정보가 없을 경우 리턴값은 3을 준다.

로그인 레퍼지토리 코드

  //로그인
  //계정 정보 찾기
  Users findById(String id);

 

로그아웃 컨트롤러

    @PostMapping("/logout")
    public String logout(HttpServletRequest request){
        //세션 삭제
        HttpSession session = request.getSession(false);

        if(session !=null){
            session.invalidate();
        }

        return "redirect:/user";
    }

로그아웃 컨트롤러 같은경우네는  request.getSession(false); 현재 세션값을 받아와 세션값이 있을 경우 삭제한다.

 session.invalidate(); 으로 세션을 초기화할 수 있다.

반응형