我对 Express 和 NodeJS 还很陌生。auth-token
在尝试先验证所述用户的存在时,我无法访问我的自定义创建的标头,然后才允许他们在系统中执行任何CRUD功能。它只是返回'undefined'
而不是我放入其中的令牌。
所以下面是我在我的家庭GET路由器中创建我的自定义标头的地方。auth-token
// Home GET Router
router.get('/', verifyUser, async (req, res) => {
// get user data by id
const dbData = await All.findById({ _id: req.user._id })
// store token passed as query 'tkn' in 'token' var
const token = req.query.tkn
// create custom header & render 'index.ejs' or homepage
res
.header('auth-token', token)
.render('index', { data: dbData.data })
}
我成功地创建了自定义标头auth-token
,没有问题,如下所示在我的索引或主页中:
现在,我正在尝试使用Home POST Router保存用户在主页中插入的新数据,如下所示。但它会首先检查用户是否有令牌使用功能:verifyUser1st
// Home POST Router
router.post('/', verifyUser1st, async (req, res) => {
// save new data code here...
}
这是我的verifyUser1st
功能:
function verifyUser1st(req, res, next) {
// get token from header
const token = req.header('auth-token') // this will return undefined
// if have, then allow/continue next(). If don't have, then return error message
if(!token) return res.status(401).json({ message: 'Accessed Denied!' }) // I got this error since token = undefined
try {
// verify the exist token
const varified = jwt.verify(token, process.env.TOKEN_4LOGINUSER)
req.user = varified
next()
} catch(err) {
res.status(400).json({ message: 'Invalid token!' })
}
}
但不幸的是,它返回Accessed Denied因为令牌是undefined。
是否应该auth-token
在请求标头部分(在上面的蓝色圆圈图像中)而不是响应标头部分(在上面的红色圆圈图像中)才能使其工作?
如果是,那我该怎么做?如果不是,那么您能否帮助我了解我应该首先学习哪些内容或主题才能使这项工作发挥作用,因为我对这个 HTTP、Express 和 NodeJS 环境有点陌生?