티스토리 뷰

#로그인 기능 -> 2가지

1. 인터셉터 (쉬움)

2. security  (어려움)

 

* 쿠키는 클라이언트에서 저장

* 세션은 서버에서 저장

 

 

 

 

* login 페이지 

 - form 형식으로 입력값을 넘긴다.

	<form action="login" method="post">
		<input type="text" name="id">
		<input type="password" name="pw">
		<input type="submit" value="로그인">
	</form>

* 컨트롤러

-  아래 보면 요청이 /login 으로 똑같은 곳이 2군데 있다. 

   하지만 getMapping 과 PostMapping 은 똑같은 요청이지만 서로 요청방식에 따라서 다르게 

   적용된다. ( form 방식으로 요청했으면 PostMapping, get 방식 요청이면 GetMapping 으로 )

-아래서 로그인 기능 부분(PostMapping)

 1. 전달받은 id 와 pw 값을 통해서

    서비스 영역에서

    //select * from 유저 where id =? and pw = ?  

    해당 id, pw 에 해당하는 유저가 있는지 확인 후 있으면 로그인 성공.

   

    로그인 이후 인증값을 남기기 위해 세션을 작성한다.

    세션을 작성하기 위해 로그인한 user의 정보를 담는다.

    userVO.setId("aaa");

    userVO.setName("홍길동");  여기 부분.

 

2. 로그인 한 유저의 정보를 세션으로 담아서 로그인을 한 인증값으로 남긴다. 

    (최근엔 토큰 방식으로 인증값을 많이 남긴다고 함.)

    세션 생성이후 

    로그인 성공 페이지인 mypage 로  redirect 형식으로 이동시켜줌.    

@Controller
@RequestMapping("/user")
public class UserController {

   @GetMapping("/login")
   public String login() {
      return "user/login";
      
   }
   
   //로그인 기능
   @PostMapping("/login")
   public String loginForm(UsersVO vo, HttpSession session) {
      
      //select * from 유저 where id =? and pw = ?
      
      //서비스영역 호출(로그인 성공)
      UsersVO userVO = new UsersVO();
      userVO.setId("aaa");
      userVO.setName("홍길동");
      
      //로그인 성공 - 세션을 이용해서 인증값
      if(userVO != null) {
         session.setAttribute("user_id", userVO.getId()); //토큰
         return "redirect:/user/mypage"; //로그인 성공
         
      }

      return "user/login"; //로그인 실패
   }
   
   @GetMapping("/mypage")
   public String mypage() {
      return "user/mypage";
   }
   
   @GetMapping("/info")
   public String info() {
      return "user/info";
   }
   
}

* 로그인 성공이후 (리다이렉트 방식으로 화면을 넘어옴)

-  mypage.html 로 넘어옴.

<body>
	<h3>세션값이 있다면 session.이름으로 사용가능합니다</h3>
	[[${session.user_id}]]
</body>

- 화면 

생선된 세션값이 잘 저장되었음을 확인했다.

 

댓글