[React] 로그인 이해하기

yeni·2022년 11월 30일
0

변수에 저장하는 것은 RAM : 껐다가 키면 사라지지만 대신 빠름
DISK : 껐다가 켜도 사라지지 않지만 느림

인증정보를 계속해서 저장하게 되면 메모리가 꽉차게 되고 그렇게 지속되다 보면 서버가 터지게 된다.

이를 해결하기 위한 방법 두가지

scale-in : 메모리를 증설하는 것
scale-out : 여러개의 컴퓨터를 구매해서 서버를 분산시키는 것

수직파티셔닝, 수평파티셔닝으로 분산해서 DB에 저장하게 된다.
(1~1000번은 1번 DB에 저장 , 1001~2000번은 2번 DB에 저장...이런방식으로 분산시키게됨)

Redis에 저장 하는 방식

DISK I/O (DISK Input/Output)
Redis : Disk에 저장하지 않고 memory에 저장하는 DB
상태정보(로그인됨)를 원래 memory session에 저장하지 않고, Redis에 저장을 하기 시작했다.

JWT토큰을 활용하는 방식(Redis없이)

로그인 하게 되면 id, email, 상태정보 등이 담긴 정보를 객체로 만들어서 로그인증표를 암호화하여 브라우저에 변수로 저장을 하고, 인증된 내용을 가지고 API 요청을 할 때 프로필정보를 첨부하여 같이 전달하게 되는데 해당정보를 다시 복호화하여 DB 조회 후, 정보를 넘겨준다.

JSON을 웹상에서 토큰으로 만들어서 활용할거다
= JSON WEB TOKENJWT 토큰)




💡 정리
1) 로그인 세션 정보를 메모리 세션에 저장 ⇢ DATA가 많아지면서 병목현상이 일어나게 된다.

2) DISK I/O가 발생하게 되서 redis를 두어서 DB 분산을 시킨다.

3) Redis도 필요없어! JWT 토큰을 활용하기


JMT 토큰의 특징 :
1. 누구든지 볼 수 있음
2. 인증은? 조작여부를 검증한다.

  • Local Storage : 껐다켜도 남아있음
  • Session Storage : 껐다키면 사라짐(새로고침은 유지)
  • 변수는? 새로고침만 해도 사라짐

암호화 방법 2가지

  • 양방향 암호화 : 암호화,복호화 전부 시키는 것
  • 단방향 암호화(해시, Hash) : 암호화는 되는데 복호화는 안되는 것,
    단뱡항 암호화를 통해 보안을 더 강화시킬 수 있다.
profile
차곡차곡 쌓는 몌으니 개발노트

0개의 댓글