0
在我的節點後端,我有一個服務器呈現管理頁面的端點。 使用json Web令牌完成身份驗證,因此我想用jwt保護對此頁面('/ admin')的訪問,並確保只有管理員才能訪問此頁面。使用json web令牌保護管理頁面
問題是,當我得到這個頁面時(例如,如果我在url欄中輸入www.mydomain.com/admin
),我無法在授權標頭中傳輸jwt。
所以我問我怎麼能保護訪問這個頁面?
注:我用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}));
});
智威湯遜中間件:
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();
}
謝謝!