• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

안녕하세요 정수원강사님 session 관련 질문드립니다!

21.11.08 17:39 작성 조회수 193

2

안녕하세요 강사님 좋은강의 항상 감사합니다.

굉장히 초보적인 질문일 수 있음에 죄송스럽습니다.

다름이 아니라 form login을 진행하게 되면 서버의 session에 사용자가 저장이 되고 이것을 이용해서 권한까지 검사하는 것으로 알고있는데요,

그런데 ajax로 api/messages로 접근을 할 때 미리 로그인되었다는, 다시말해 클라이언트와 서버가 서로 jsessionId를 전송하지 않는 것처럼 보이는데 POST로 로그인 후 GET api/messages를 할 때 서버는 이용자를 어떻게 구분하나요?

답변 미리 감사드립니다 ^_^

답변 2

·

답변을 작성해보세요.

7

네 

ajax 로 통신을 할 때에도 request 객체의 header 에는 JSESSIONID 를 포함해서 서버로 전송됩니다.

브라우저가 하는 역할입니다.

보통 세션쿠키라고도 하는데요

최초 서버에서 발급한 세션쿠키를 Response 객체에 담아서 클라이언트로 보내게 되고 클라이언트가 서버로 요청할 때는 서버로 부터 받은 세션쿠기,  즉 JSESSIONID를 Request 객체에 담아서 보내는 과정이 Form 방식의 인증 혹은 Ajax 방식의 인증 모두 적용된다고 보시면 됩니다.

다만 요즘은 Ajax 방식의 Rest 통신을 할 때는 세션을 사용하지 않고 토큰 방식의 인증 및 권한을 사용해서 요청과 응답을 주고 받는 식으로 많이 구현을 합니다

JWT (Json Web Token) 으로 인증하는 방식입니다.

이 때는 아예 세션을 사용하지 않기 때문에 서버가 사용자가 누군지 알 수 없고 토큰에 포함 된 정보만을 해석해서 인증을 처리하게 됩니다.

참고하시면 됩니다.

친절한 답변 너무나 감사합니다!!^_^

0

yumin3님의 프로필

yumin3

2022.09.07

그럼 Intellij에서 제공하는 http request 툴이 로그인에 성공하면 계속 JSESSIONID 쿠키를 들고 있고, 다른 요청을 하더라도 함께 쿠키를 보낸다고 보면 되는건가요? postman같은 툴을 사용하더라도 동일하게 적용이 되려면 api/message 요청을 보낼때는 쿠키를 복사해서 사용해야 하는거죠?