개발자 성장 일지

로그인...쿠키..세션

NEWDODORIPYO 2022. 4. 9. 20:57

로그인

브라우저에서 호출하면 서버에서 응답해주는 경우 → 옛날 방식

APP 이 서버에서 순수하게 데이터 <API>만 주고받을 수 있다 → 요즘 방식

APP에서 서버에게 특별한 문자열을 보내서 서버에서 검증하고 데이터를 보내주는 “토큰 기반 인증” 방법 - 완전 요즘 방식 JWT (Json Web Token)

쿠키

(유효 기간이 있다)

브라우저와 서버 사이에 주고받는 문자열 조각

👍쿠키와 세션은 원래는 쿠키이지만 구분하기 위해 세션과 쿠키를 나눠서 설명함

 

회원카드 같은 쿠키 <세션 쿠키>

  • WAS발급
  • 유효기간이 없다
  • 브라우저를 종료하면 없어진다
  • 정보가 서버 쪽에 있음

 

쿠폰 같은 쿠키

  • 개발자가 직접 생성
  • 유효기간이 있을 수도 있다
  • 브라우저를 종료해도 살아있다 (로그인 기억하기 , 오늘 하루 이 창 열지 않기)
  • 정보를 사용자가 가지고 있다
  • 쿠키는 보안에 노출 가능성이 있지만 요즘 모바일 특성상 세션이 아닌 쿠키를 사용한다

세션 처리 과정

서버에서 세션 쿠키를 발행

쿠키 발행 시에 세션 저장소에 공간 생성

request.getsession( )을 하면 해당 공간에 접근

이 공간을 HttpSession이라 한다 < HttpSession 내부는 map의 형태>

로그인을 하면 setAttribute( 문자열 , 객체 ) 저장

글쓰기 하려면 로그인을 확인해야 하니 getAttribyte( ) 한다

 

코드로 가볍게 세션 로그인 <Bad Code>

LoginControllr Servlet을 하나 만들어 주고 거기에 코드를 넣어주었습니다

String mid = request.getParameter("mid"); // 회원의 아이디는 mid 
		// 중요한 코드 브라우져를 열면 만약에 공간이 없으면 공간을 만들어 주기도하고 있는 공간을 찾기도 함 
		HttpSession session = request.getSession(); 
		
		session.setAttribute("logininfo", mid); //임의로 저장소에 정보 저장

로그인된 사람만 볼 수 있는 페이지를 add라고 가정하고

HttpSession session = request.getSession();
		
		System.out.println("-----------------------"); //디버깅용
		System.out.println(session.getAttribute("loginInfo")); // 디버깅용
		
		//session이 isNew 새로만들어졌거나 get에서 가져온값이 null 이면 로그인 한적이 없다는 뜻 
		if(session.isNew() || session.getAttribute("loginInfo")==null) {
		System.out.println("이 사용사는 로그인 안된 사용자 ");
		
		//로그인 된적없으면 팅겨내기 
		response.sendRedirect("/loginInput"); //sendRedirect 는 브라우저에서 get방식으로 호출함
		return;

add에 들어온 유저가 로그인을 한 적이 없다면 loginInput로 튕겨 나간다

'개발자 성장 일지' 카테고리의 다른 글

Spring transaction<트랜잭션>  (0) 2022.04.29
Filter  (0) 2022.04.09
ERD  (0) 2022.04.09
2022.04.05 인덱스 그리고 DB 설계  (0) 2022.04.05
2022.04.04 DB 와 WEB 연결  (0) 2022.04.05