【发布时间】:2019-12-07 20:34:18
【问题描述】:
我想存储除userId 或accessToken 之外的一些数据以存储在会话中,在使用express-session 的Loopback 应用程序中的after save 或before save 操作挂钩中。
我的server/server.js 中有这个:
....
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
....
app.use(session({
name:'session-name',
secret: 'keyboard cat',
store: new MongoStore({url: 'mongodb://localhost/test', ttl:1}),
resave: false,
saveUninitialized: true
}));
由于我使用一些参数定义远程方法,它实际上传递的是参数而不是 req 对象,所以我不能以快速方式进行。
如何使用会话来存储和获取价值?
编辑: 我找到了一种在远程方法中设置会话的方法,方法是将它添加到我的 model.json 的远程方法中:
"accepts": [
{
"arg": "req",
"type": "object",
"http": {
"source": "req"
}
}
]
并且,将req 参数添加到远程方法函数中,
Model.remoteMethod = function (req, callback) {
req.session.data = { 'foo': 'bar' }
callback(null)
};
现在,问题是我想在操作钩子中获取这个会话值
Model.observe('before save', function (ctx, next) {
//How to get the session here?
})
【问题讨论】:
-
您收到的错误和响应。请解释
-
我不知道如何在会话中存储数据(访问令牌或用户 ID 除外)
-
这有点小技巧,但我会使用远程挂钩将整个上下文对象 (loopback.io/doc/en/lb3/…) 附加到有问题的实例,然后在
before save挂钩中将其删除。问题是模型挂钩不一定与单个请求相关联。这是他们在 LoopBack 4 中已经或正在尝试解决的问题。
标签: session loopbackjs express-session connect-mongo