Auth

시바코코개발자·2023년 6월 24일
1

쿠키: 브라우저에 저장되는 key-value로 이루어진 작은 데이터 파일 서버와의 교환이 가능
ex) session-id, auth_token
브라우저가 닫히면 삭제, 만료기간을 명시하면 삭제되지 않습니다.
ex) 팝업창 3일동안 보지 않기

세션: 세션은 쿠키를 기반으로 만들어져 있음.
브라우저에는 session-id가 해당 쿠키를 통해 서버의 인메모리에서 유저정보를 찾아 인증
-> 서버에 부담이 감,httpOnly를 걸어 놓음

사용자의 로그인 -> 세션 ID(쿠키기반, 30분)-> API 요청 -> 사용자 인증 -> 웹사이트를 통과한 사람(보안적으로도 좋고, 사용자 정보를 알 수 있음) - 단점은 서버에 부담이 감.
-> 세션만료 시 로그아웃

인증 토큰
백엔드에서 요청한 유저가 누구인지에 대한 key값을 저장,암호화, 프론트에 전달

프론트는 해당 토큰을 각 요청마다 심어서 백엔드에게 요청
백엔드가 유저 정보를 갖고 있을 필요 없이, 해당 코드를 복호화하여 DB조회를 통해 해당 유저가 누구인지 알아내는 방식

인증 토큰이 있다는 것은 사이트를 통해 정상적으로 접근한 유저 확인 가능

JWT(Json Web Token)
json데이터를 암호화하여 사용.msa(micro soft architecture-한 서버가 죽더라도 여러서버가 살아있음.),키만 알고 있다면 어떤 서버에서든 jwt토큰을 주고 받을 수 있음.- 키는 정기적으로 업데이트함.

ORM(Object,Relational Mapping)
객체와 DB를 관계
ex) select * from sy_user left join sy_prod as prod on prod.id = sy_user.id where sale_stauts =0;

User.find({
  where:{
      sale_status:0
  },
  relations:{
      prod: true
  }
})
  • sequelize ->
    nestJS/typeORM -> 현업에서 많이 볼 수 있는 조합.

prismaORM/drizzleORM

  • 라이브러리 설치
    npm i mysql2 sequelize sequelize-cli

passport
로그인, 회원가입,jwt인증, Auth(Sns로그인),세션관리
손쉽게 구현 간으하도록 만들어진 라이브러리

npm i passport passport-local jsonwebtoken passport-jwt bcrypt

회원가입,로그인 로직 구현

1. 엔드포인트(백엔드 URL)
	/user/sign-in
    /user/sign-up
    /user/jwt-refresh
    
2. 로직, 구현
	server -> 로그인 -> 반환값 인증토큰 -> 만료기간 설정 -> 리프레쉬 토큰 -> 인증 토큰 재발급 
    
3. input, schema,output
	input - id,pw필요해,
   	user:{
    id int
    pw varchar
    }

200
-true
400

  • '이미 있는 아이디입니다.'
  • '비밀번호 양식을 지켜주세요'
  • 아이디와 비밀번호를 다시 확이해주세요'
  • 401,403
    - 401- '인증토큰이 없습니다'- 인증토큰 만료
    • 403 '인증되지 않은 사용자'

npx sequelize init

config

  • DB 연결 설정

models

  • 스키마 정의

migrations

  • 테이블의 데이터 수정, 데이터 추가 및 이동

seeders

  • 백업본

0개의 댓글