【发布时间】:2021-10-12 10:14:33
【问题描述】:
我正在使用 express 构建一个简单的节点 js 应用程序,我想分配用户角色和权限,代码运行成功但我没有得到想要的结果......具有“管理员”角色的用户不是能够访问管理员路由。
const jwt = require('jsonwebtoken')
const User = require('../model/User')
function authUser(req, res, next) {
const token = req.header('auth-token');
if (!token) return res.status(401).send('Access Denied');
try {
const verified = jwt.verify(token, process.env.TOKEN_SECRET);
req.user = verified;
next();
} catch (err) {
res.status(400).send('Invalid Token');
}
}
function authRole(...roles) {
return (req, res, next) => {
if (!roles.includes(req.user.userRole)) {
res.status(401)
return res.send('Not allowed')
}
next();
}
}
module.exports = {
authUser,
authRole
}
这是下面的管理员路由
const router = require('express').Router();
const { authUser, authRole } = require('../secure/verifyToken');
router.get("/", authUser, authRole('admin'), (req, res) => {
res.send('admin page')
})
module.exports = router;
当我用邮递员测试代码时,我仍然收到一条未经授权的消息“不允许”。
请提供任何解决方案。
【问题讨论】:
标签: node.js express mongoose jwt