expressでカスタムミドルウェアを使用したことがあります.
8821 ワード
const jwt = require('jsonwebtoken')
const jwtMiddleware = async(req, res, next) => {
// read the token from header or url
const token = req.cookies.token
try{
const decoded = await jwt.verify(token, req.app.get('jwt-secret'))
req.decoded = decoded
next()
} catch (error) {
console.log(error);
console.log('Unauthorized jwt')
res.status(401).json(
'로그인이 필요합니다.'
)
}
}
module.exports = jwtMiddleware
これらのミドルウェアはクッキーからtokenを受信し、このように使うと、よく働いていることがわかります.
上位2名
つまり、
'/'
と'/login'
は、コインがない場合に近づかなければならない.上のミドルウェアを通過させないのです.
大神を踊る👍!
一番上のコードからいくつか指摘して、ここに記録したいです.
1. req.app.get('jwt-secret')
この部分は今回初めて見ました.
app.js
からapp.set("jwt-secret", config.secret);
というコードがありますこれは
config.secret
の値を後方に伝達する役割を果たす.2. req.decoded = decoded
これでも後ろから近づくことができます.
3.new Promiseを使用する方法
上のコードは少し変形しています.
const jwt = require('jsonwebtoken')
const authMiddleware = (req, res, next) => {
// read the token from header or url
const token = req.cookies.token
const jwt = new Promise((resolve, reject) => {
jwt.verify(token, req.app.get('jwt-secret'), (err, decoded) => {
if(err) {
reject(err);
}
resolve(decoded)
})
}
)
const onError = (error) => {
res.status(401).json(
'로그인이 필요합니다.'
)
}
p.then((decoded)=>{
req.decoded = decoded
next()
}).catch(onError)
}
module.exports = authMiddleware
これで明確に何かを減らすことができます.Reference
この問題について(expressでカスタムミドルウェアを使用したことがあります.), 我々は、より多くの情報をここで見つけました https://velog.io/@vagabondms/express에서-커스텀-미들웨어-사용해보았다テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol