app.use('/api',function(req, res, next) {
var originalSend = res.send;
res.send = function (){
let temp=JSON.parse(arguments[0]);
temp.mw_add="Some Data From Middleware";
temp.mw_time = Date.now()
res.cookie('MiddleWare','added after route send')
arguments[0] = JSON.stringify(temp);
originalSend.apply(res,arguments);
}
next();
});
app.use('/api', APIRouter);
var express = require('express');
var router = express.Router();
const some_api_data={api_value:35,api_status:"Status OK"}
/* GET API page. */
router.get('/', function(req, res, next) {
res.status(200).json(some_api_data)
});
module.exports = router;
{"api_value":35,"api_status":"Status OK"}
{"api_value":35,"api_status":"Status OK","mw_add":"Some Data From Middleware","mw_time":1700082379016}
+ устанавливается кука Set-Cookie: MiddleWare=added%20after%20route%20send; Path=/
Подскажите пожалуйста, что значит
res.body + "modified"; и по какому принципу это работает?
function modify(req, res, next){
res.body = res.body + "modified";
next();
} и положите туда все свои "повторяющиеся хотелки"
Тогда есть один момент, если токен протух, а рефреш еще жив, мы отдаем инфу доступную только по действующему токену ? apiRouter.use(function(req, res, next) {
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {
jwt.verify(token, app.get('superSecret'), function(err, decoded) {
if (err) {
//Here I can check if the received token in the request expired
if(err.name == "TokenExpiredError"){
var refreshedToken = jwt.sign({
success: true,
}, app.get('superSecret'), {
expiresIn: '5m'
});
request.apiToken = refreshedToken;
next();
}else if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
}
} else {
//If no error with the token, continue
request.apiToken = token;
next();
};
});
} else {
return res.status(403).send({
success: false,
message: 'No token provided.'
});
}
});
по куке сервер может генерить js на лету, а там и будет location.reload(значение из куки)
И нужно это, скорее всего, чтобы один сервер в единой точке выполнял все редиректы.