Я проверил пакет request-context и создал образец веб-приложения Azure для проверки этой проблемы.
app.js
const express = require('express')
const app = express()
const cookieParser = require('cookie-parser')
const httpContext = require('request-context')
app.use(httpContext.middleware('request'))
app.use(cookieParser())
app.use(function (req, res, next) {
var cookie = req.cookies.uname;
console.log("usercookie:"+cookie);
if(cookie!=undefined){
// set the user who made this request on the context
httpContext.set('request:user', {username:cookie,loggedTime:req.cookies.loggedTime});
}
next();
});
app.get('/login', (req, res) => {
var user=req.query.name;
if(user==undefined)
res.send('you need to pass the username.');
else{
//set a cookie
res.cookie('uname',user, { maxAge: 900000, httpOnly: true });
res.cookie('loggedTime',new Date(), { maxAge: 900000, httpOnly: true });
console.log('cookie created successfully');
res.send('login successed.');
}
});
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.get('/me',(req,res)=>{
res.send('Hello World!'+httpContext.get('request:user.username')+",loggedTime:"+httpContext.get('request:user.loggedTime'));
});
app.listen(process.env.PORT || 3000, () => console.log('Example app listening on port 3000!'))
Package.json
"dependencies": {
"cookie-parser": "^1.4.3",
"express": "^4.16.3",
"request-context": "^2.0.0"
}
TEST:
https://brucenode.azurewebsites.net/login?name=bruce
https://brucenode.azurewebsites.net/me
httpContext.set ('xxxxx', 'jnsdkj'); `Выдает ошибку 'Не найден активный контекст для установки свойства'
Я предположил, что вам может понадобиться проверить ваш код и убедиться, что вы вызываете httpContext.set
. Для веб-приложения Azure можно также включить ведение журнала диагностики для веб-приложений в службе приложений Azure , чтобы устранить эту проблему.