

토큰을 이용하는 방식
오픈소스 라이브러리 사용
jsonwebtoken 라이브러리 사용
npm init
npm install jsonwebtoken -s
const jwt = require("jsonwebtoken");
const token = jwt.sign({userId:user.userId}, "sparta-secret-key");
암호화 된 데이터는 api서버에 요청을 할 때 인증 양식에 맞기 보내 인증 시도
AccessToken
사용자 권한이 확인 - 사용자를 인증하는 용도로 발급
Stateless - node.js서버가 죽었다 살아나도 동일한 동작을 함
RefreshToken
특정한 사용자가 AccessToken 발급 받기 위한 용도
서버에서 특정 토큰 만료 할 때 제거
let tokenObject = {}; // Refresh Token을 저장할 Object
//set-token api - accesstoken refreshtoken 발급받는 부분
//사용자가 GET /set-token/:id API를 호출했을때 Access Token과 Refresh Token을 2개 발급
app.get("/set-token/:id", (req, res) => {
const id = req.params.id;
const accessToken = createAccessToken(id);
const refreshToken = createRefreshToken();
//refreshtoken이 어떤사용자의것인지 확인 위해서
tokenObject[refreshToken] = id; // Refresh Token을 가지고 해당 유저의 정보를 서버에 저장합니다.
res.cookie('accessToken', accessToken); // Access Token을 Cookie에 전달한다.
res.cookie('refreshToken', refreshToken); // Refresh Token을 Cookie에 전달한다.
//accessToken, refreshToken이라는 Key로 Cookie를 2개 발급
return res.status(200).send({ "message": "Token이 정상적으로 발급되었습니다." });
})
function createAccessToken(id) {//id받아서
const accessToken = jwt.sign(
//jwt토큰 만들고
{ id: id },
// JWT 데이터 id라는 키를 가지고:전달받은id를 벨류로 저장
SECRET_KEY, // 비밀키
{ expiresIn: '10s' }) // Access Token이 10초 뒤에 만료되도록 설정합니다.
return accessToken;
}
function createRefreshToken() {
const refreshToken = jwt.sign(
{}, // JWT 데이터
SECRET_KEY, // 비밀키
{ expiresIn: '7d' }) // Refresh Token이 7일 뒤에 만료되도록 설정합니다.
//accesstoken을 재발급하는 용도로 쓰기 때문에 만료기간이 길어도 괜찮
return refreshToken;
}
웹서버의 요청을 공통적으로 처리
ex) 모든 요청에 로그 남겨 확인, 승인된 사용자만 API 접근
Express.js에도 있다.
//urlencoded라는 미드웨어를 통해서 들어온 데이터를 파싱해준다 그 후 해당하는 라우터로가라
app.use("/api", express.urlencoded({ extended: false }), router);
app.use(express.static("assets"));//assets서빙하기위한 전역미드웨어
미들웨어는 위에서 아래로 넘어간다
Express.js의 미들웨어가 실행되는 경우
app.use(Middleware): 모든 요청에서 미들웨어가 실행된다.
app.use(’/api’, Middleware): api로 시작하는 요청에서 미들웨어를 실행한다.
app.post(’/api’, Middleware): api로 시작하는 POST 요청에서 미들웨어를 실행한다
로그인기능 구현 회원가입 api 구현 도 다 함
세션 쿠키 잘 모르겠다. 숙지 요망
mysql강의 조금 남았고
개인과제시작
회원가입, 로그인, 댓글 추가 수정 삭제
만들기
1. erd 작성
2. 몽구스를 musql로 변경
3. 토큰으로 인증받기