0
私のノードのバックエンドには、管理ページをレンダリングするエンドポイントがあります。 認証はjson webトークンで行われますので、このページ( '/ admin')へのアクセスをjwtで保護し、管理者だけがこのページにアクセスできるようにします。json Webトークンで管理ページを保護する
問題は、このページを取得したときに承認ヘッダにjwtを送信できないことです(たとえば、URLバーにwww.mydomain.com/admin
と入力した場合)。
このページへのアクセスを保護するにはどうすればよいですか?
注:私は地元の戦略にpassport
を使用し、ここでexpress-jwt
は、エンドポイントのためのコードです:
// routes
// login is handled by auth subapp.
router.get('/', jwt, jwtAdmin, (req, res) => {
Game.findAll({order: [['g_name', 'ASC']]}).then(games => {
if (!games) {
res.status(404).send({error: "No games..."});
return;
}
res.status(200).render('sections/admin',
Object.assign(viewOptions, {
games
}));
}).catch(error => res.status(500).json({error}));
});
JWTミドルウェア:
const jwt = require('express-jwt');
const blacklist = require('express-jwt-blacklist');
module.exports = jwt({secret: process.env.SECRET, isRevoked: blacklist.isRevoked});
jwtAdminミドルウェア:
module.exports = (req, res, next) => {
if (!req.user) {
res.status(401).send('you should login !');
return;
}
if (!req.user.admin) {
res.status(401).send('admin only !');
return;
}
next();
}
ありがとう!