1
我正在使用Express/Node並編寫了一些身份驗證中間件來檢查每個請求上的JWT。在特定路由上禁用特定謂詞的身份驗證中間件
我想禁用這個路由中間件(POST'/ api/user /'),但是我想保留路由的中間件(GET'/ api/user /')。
我該如何做到這一點?
請參閱下面的代碼。
app.js
// app.js
app.use('/api/userauth', require('./Controllers/api/userauth.js'))
app.use(require('./Middleware/Authenticate.js'));
app.use('/api/user', require('./Controllers/Api/User.js'));
app.use('/api/item', require('./Controllers/Api/Item.js'));
authenticate.js
//authenticate.js middleware
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {
jwt.verify(token, secretKey.secretKey, function(err, decoded){
if (err) {
return res.json({
success : false,
message : "failed to auth token."
})
} else {
console.log(decoded);
req.decoded = decoded;
next();
}
})
} else {
res.status(403).send({
success:false,
message:'no token provided'
})
}
}
API/user.js的
router.route('/')
.get(function(req,res){
models.User.findAll({
}).then(function(users){
res.json(users);
})
})
.post(function(req,res){
models.User.create({
username : req.body.username,
password : req.body.password,
firstname : req.body.firstname,
lastname : req.body.lastname
}).then(function(user){
res.json({
"Message" : "Succesfully created user: ",
"User: " : user
});
});
});
module.exports = router;
有點像這樣? http://stackoverflow.com/questions/19337446/is-it-possible-to-disable-remove-a-middleware-for-specific-route-in-expressjs –
@LucasCosta偉大的工程!謝謝。 –