/** cookie, session
yarn add cookie-parser 쿠키만들기 편하게 만들어줌.
cookie : 문자열 형식으로, 이전에 방문했던 정보를 기억함.
session : 세션은 데이터를 서버에 저장. 세션ID 를 쿠키에서 저장해, 서버에서 찾을 수 있게함.
let session = {}; 세션{}
app.get('/set-session', function (req, res, next) { (set-session에 들어가면,)
  const name = 'sparta'; 
  const uniqueInt = Date.now(); (지금 시간값을 저장함)
  session[uniqueInt] = { name }; (세션의 키에 시간값을 넣어서 유니크한 값으로 만듬. value는 name)
  res.cookie('sessionKey', uniqueInt); (쿠키를 리스폰, '세션키'를 key값으로 시간값이 들어감.)
  return res.status(200).end();
});

app.get('/get-session', function (req, res, next) { (get-session에 들어가면,)
  const { sessionKey } = req.cookies; (쿠키에서 받은 value값을 sessionkey로 넣음.)
  const name = session[sessionKey]; (sessionKey로 저장된 시간값을 넣어서 name을 도출해냄, 안맞으면 undefined 뜨지않을까)
  return res.status(200).json({ name }); (name을 리스폰)
});
**/


/** JWT
JWT : 쿠키 암호화, JSON형태. 헤더, 페이로드, 서명으로 이루어지며, .기준으로 나누어진다.
header : 토큰의 타입, 어떤 암호화를 사용했는가
payload : 실제 전달하려는 데이터 iat 는 언제까지 유효한지.
signature : 쿠키가 변조되지 않았는지 확인함. 검증
const token = jwt.sign({myPayloadData: 9999(인증값)}, 'mysecretkey(라는 이름의)')(부호화)
const decodedValue = jwt.decode(token)(payload 복호화)
const decodedValueByVerify = jwt.verify(token, 'mysecretkey') (위변조 여부 확인)

app.post('/login', (req, res) => { 로그인 사이트
  // 사용자 정보
  const user = {
    userId: 203,
    email: 'archepro84@gmail.com',
    name: '이용우',
  };

  // 사용자 정보를 JWT로 생성
  const userJWT = JWT.sign(
    user, // user 변수의 데이터를 payload에 할당
    'secretOrPrivateKey', // JWT의 비밀키를 secretOrPrivateKey라는 문자열로 할당
    { expiresIn: '1h' }, // JWT의 인증 만료시간을 1시간으로 설정
  );

  // userJWT 변수를 sparta 라는 이름을 가진 쿠키에 Bearer 토큰 형식으로 할당
  res.cookie('sparta', `Bearer ${userJWT}`);
  return res.status(200).end()(딱히 리턴할게 없을때, 쿠키만 제공할 때);
});
**/

/** Prisma +
유저 정보를 다른 모델로 넘길때 userInfos(앞에있는건 관계성 설명) UserInfos(어디에 줄 것 인가)?(null값이여도 넘겨준다 Int type)
posts Posts[](String type)
user(관계) Users(어떤 모델에서) @relation(fields : [userId(현재 모델에)], references : [userId(외부 모델에서 참조)], onDelete(UserId가 없어지면) : Cascade(전부 삭제)) (prisma에서는 이런식으로 가져온다.)
다 적은 이후 model마다 @@("Users") : 실제로 어떤 모델의 이름인지 정의
**/

0개의 댓글

관련 채용 정보