如何使服务器上的所有POST请求仅对将其JWT令牌放置在浏览器存储中的管理员(所有授权用户)可用。现在,如果我从Insomnia应用程序发送任何POST请求,服务器将接受此。也许它需要一个middlewawre函数来阻止未经授权的会话请求,或者它可以阻止所有的整个请求。重要详情:我需要使GET请求对未授权的用户可用
下面是一个函数的例子,我想用auth检查重新格式化app.post('/add/participants', participant)
export const participant = async (req, res) => {
try {
const participant = new ParticipantSchema({
fullName: req.body.fullName,
category: req.body.category,
// team_id: req.body.team_id, trainer: req.body.trainer,
country: req.body.country,
address: req.body.experience,
phoneNumber: req.body.phoneNumber,
profileLink: req.body.profileLink,
payment: req.body.payment,
// championshipId: championship._id, });
await participant.save();
const participantData = participant._doc;
return (res.json({
participantData }))
} catch (err) {
return (
res.status(403).json({
message: "403 error" })
)
}
}
我使用node.js,后端使用mongoDB,前端使用react.js。
我试过在POST请求的中间使用axios.get('localhost:4444/add/participant'),但它对我不起作用。所以我尝试了express-session,但我不明白它是如何工作的,因为它总是显示401错误,即使我被授权。
1条答案
按热度按时间3htmauhk1#
您可以向
post
端点添加中间件,如下所示:然后创建一个
requireAuth
函数来验证JWT令牌。如果
isValidJWT
为true,则将调用next()
,并运行participant()
函数。