[Node.js] bcrypt와 jwt 이해 및 사용법
BE/NodeJS 2023. 5. 29.
목 록
- bcrypt 설치
- bcrypt란?
- bcrypt 사용예시
- bcrypt 비밀번호 비교 방법
- jwt(json web token)란?
- jwt 사용 예시
bcrypt 설치
npm install bcrypt
// Typescrypt의 경우
npm install @types/bctypt
bcrypt란?
사용자의 비밀번호를 보호하는 역할을 한다. 이는 비밀번호를 '해시(hash)' 하는 데 사용되며, 이를 통해 데이터베이스에 안전하게 비밀번호를 보관할 수 있다.
해시된 비밀번호 예시:$2b$10$z9xgsRrjl62tJ/R.RRROvOJ6LSxaY.Fy8pG8Fq5akfjHSHn70cRzs
예시이며, 여기서 비밀번호를 해석하는 것은 매우 어렵다.
bcrypt 사용 예시
bcrypt.hash('비밀번호(string)', salt 길이(Number) )
const bcrypt = require('bcrypt');
const saltRounds = 10;
const plainPassword = 'myPassword123';
bcrypt.hash(plainPassword, saltRounds)
bcrypt 비밀번호 비교 방법
bcyprt.compare('해시 전 비밀번호', '해시 된 비밀번호', 콜백)
JWT(json web token)란?
세션(session)과 비슷한데, 세션은 입장권 번호만 가지고 있다고 한다면, JWT는 여러가지 정보를 가지고 있다.(참고: 유튜브 코딩애플)
JWT는 세 부분이 있는데 Header, Payload, Signature이다.
Header: 사용하는 해싱 알고리즘, 타입
Payload: JWT에 담기는 내용(필수적인 부분만 담음)
Signature: Secret 키 설정
JWT 사용 예시
토큰 발급: jwt.sign({ payload 내용 }, 'secret key', { options })
const jwt = require('jsonwebtoken');
const secretKey = 'mySecretKey';
const user = { id: 1, username: 'John' };
const token = jwt.sign(user, secretKey, { expiresIn: '1h' });
토큰 검증: jwt.verify('토큰', 'secret key', callback) - 여기서 callback은 혹시 토큰이 누군가에 의해 변경돼어서 맞지 않는 경우 처리
jwt.verify(token, secret, (err, decoded) => {
if (err) {
console.error(err);
return;
}
console.log(decoded);
});
'BE > NodeJS' 카테고리의 다른 글
[Node.js] mysql, Sequelize 모델 정의, 메소드 사용 방법 (0) | 2023.06.01 |
---|---|
[Node.js] 유효성 검사(Validation), express-validator 사용법 (0) | 2023.05.28 |
[Node] findOne 메소드와 조건추가 이해하기 (0) | 2023.05.15 |
[Node] findAll 메소드 활용하여 Database 조회하기 (0) | 2023.05.15 |
[Node] mySQL과 Sequelize를 이용한 데이터베이스 설정 (0) | 2023.05.14 |