我想知道如何使用我的 JWT 令牌找到我的論壇
exports.getByOwnerID = function (req, res, next) {
Forum.find({createdBy: req.body.createdBy})
.then(doc => {
if(!doc) { return res.status(400).end();}
return res.status(200).json(doc);
})
.catch(err => next(err));
}
所以在這里我有我的功能來驗證我的 JWT 令牌我以這種方式使用它
這是我的路線: router.post('/',verifyToken,getOwner);
這是我的請求:POST http://localhost:8080/forum/getOwner Authorization: Bearer {token}
const extractToken = (rawTokenHeader) => {
if(!rawTokenHeader) { return undefined; }
// Remove bearer and extract token value
const temp = rawTokenHeader.split(' ');
if(!temp || temp.length != 2) { return undefined; }
// Return encoded token
return temp[1];
};
module.exports = function(req,res,next){
// Get authorization header
const rawTokenHeader = req.header('Authorization');
// Get token value
const token = extractToken(rawTokenHeader);
// No token -> No access
if(!token) {
console.log('No token in request');
// Access denied
return res.status(401).send('Access Denied');
}
// Verify token
try {
const decoded = jwt.verify(token, process.env.JWT_KEY);
req.token= decoded;
req.user = decoded;
//console.log(token.userID);
// Proceed
next();
} catch(err) {
console.error('Error in JWT check: ', err);
// Tell client something went wrong
res.status(400).send('Invalid Token');
}
}
const forumSchema = ({
forumName: {
type: String,
required: true,
},
forumDescription: {
type: String,
required: true,
},
createdBy: {
type: Schema.Types.ObjectId, ref: 'User'
},
published_on: {
type: String,
default: moment().format("LLL")
},
});
我已經嘗試了很多東西,但我無法解決它了..我需要幫助
uj5u.com熱心網友回復:
我怎么沒有足夠的聲譽來發表評論我把它作為答案,如果我們不知道論壇的架構是什么樣子以及回傳 req.body.createdBy 的內容,很難說為什么這不起作用,但如果jsw是由你創建的,你可以在其中編碼Forum._id,當你在這里收到它時,你可以解碼它并在資料庫中找到論壇
uj5u.com熱心網友回復:
如您所見,物件中有user(或token)資料req,我希望您的 jwt 令牌也包含用戶的 id。您可以使用用戶 ID 來查找他們的論壇。
根據路由器router.post('/', verifyToken, getOwner);(getByOwnerID???),讓我們更新getOwner處理程式:
exports.getOwner = function (req, res, next) {
Forum.find({ createdBy: req.user.userID }) // or something like that
.then(doc => {
if(!doc) { return res.status(400).end();}
return res.status(200).json(doc);
})
.catch(err => next(err));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354879.html
標籤:javascript 节点.js MongoDB 表达 jwt
