Nodejs 의 JWT 와 Session 사용
JWT 사용
JWT 는 Json WebTokens 의 약자 형식 으로 구체 적 으로 무엇 인지 상세 하 게 쓰 지 않 고 자 료 를 볼 수 있 습 니 다.
여기에 두 개의 플러그 인,express-jwt 와 JSonWebTokens 를 도입 합 니 다.-
express-jwt 내부 에서 jsonwebtoken 을 인용 하여 패키지 에 사용 합 니 다.JWT 형식 으로 인증 과 권한 수 여 를 하 는 사고방식 은 다음 과 같다.
jwt 인증 절차
서버 에서 사용 하 는 방식 은 다음 과 같 습 니 다.
//
npm i jsonwebtoken --save
npm i express-jwt --save
//
const jwt= require('jsonwebtoken');
const expressJwt = require('express-jwt');
//
const secret = 'salt';
// token
const token = jwt.sign({
name: 123
}, secret, {
expiresIn: 60 //
});
// token
//eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoxMjMsImlhdCI6MTQ5MTQ3NTQyNCwiZXhwIjoxNDkxNDc1NDg0fQ.hYNC4qFAyhZClmPaLixfN137d41R2CFk1xPlfLK10JU
// token
app.use(expressJwt ({
secret: secret
}).unless({
path: ['/login', '/getUserInfo'] // , URL
}));
//
app.use(function (err, req, res, next) {
// token
if (err.name === 'UnauthorizedError') {
// ( err )
res.status(401).send('invalid token...');
}
});
// , token
app.get('/getUserInfo', function(req, res) {
res.json({
token: token
})
})
클 라 이언 트 에서 token 을 사용 하 는 정확 한 형식 은 token 을 authorization 이라는 header 에 두 고 해당 하 는 값 을Bearer
로 시작 한 다음 에 한 칸 을 비 우 는 것 입 니 다.
authorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiQmluTWFpbmciLCJkYXRhIjoiPT09PT09PT09PT09PSIsImlhdCI6MTUwMTgxNDE4OCwiZXhwIjoxNTAxODE0MjQ4fQ.GoxGlc6E02W5VvqDNawaOrj3MPO-4UYeFdngKR4bVTE
// axios
const instance = axios.create();
const yourToken = 'sfsgagfdgd';
//
instance.interceptors.request.use(function(config) {
config.headers.authorization = `Bearer ${yourToken}`
return config;
})
세 션 사용전통 적 인 인증 과 사용자 식별 은 각각 다음 과 같은 형식 을 채택 한다
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
app.use(cookieParser('sessiontest'));
app.use(session({
secret: 'sessiontest',// cookieParser
resave: true, //( ) , session 。
rolling: true, // cookie ,
saveUninitialized:true, // session 。 true, ( ) , 。
cookie: {
maxAge: 60 * 1000 // ,
}
}));
/**
*
*
*/
app.use(function(req, res, next) {
let url = req.originalUrl;
req.session.touch(); // session
if (url !== '/login' && !req.session.user) {
res.status(401).send(' ');
return
}
next();
})
대비실천 파 인사 로 서 나 는 두 가 지 를 모두 시험 해 보 았 으 며,동시에 인터넷 의 블 로 그 를 결합 하여 다음 과 같은 대 비 를 귀납 하 였 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Firebase Authentication은 토큰 인증을 사용하는 이야기요 전날 Firebase를 이용하여 Vue.js에서 만든 SPA(Single Page Application)에 인증 기능을 폭속으로 구현한 적이 있었다. Firebase가 제공하는 공식 을 사용하여 1시간과 100행...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.