我有两个 API。当我从 Atom 访问第一个 API 时,我在 session 中设置了一个成功的参数。但是当我点击第二个 API 并尝试通过 req.session 获取 session 时,它会创建一个新 session 而不是提供先前的 session 。 Ho 将我在第一个 API 中设置的 session 和参数获取到第二个 API。
下面是我设置 session 参数的第一个 API 代码。
function firstAPI(req, res) {////This is POST API
session = req.session;
////Doing something with req
session.message="my message";
sails.log.info("session " + JSON.stringify(session));
res.send(""session is set);
}
在终端我得到以下 session
session {"cookie":{"originalMaxAge":180000,"expires":"2017-02-28T05:03:25.304Z","httpOnly":true,"path":"/"},"message":"my message"}
下面是我尝试检索 session 的第二个 API 代码。
function secondAPI(req, res) {
sails.log.info("session= " + JSON.stringify(req.session));
}
第二个 API 的日志是
session= {"cookie":{"originalMaxAge":180000,"expires":"2017-02-28T05:04:18.623Z","httpOnly":true,"path":"/"}}
以下是我的config/session.js文件
module.exports.session = {
secret: '123abc',
cookie: {
maxAge: 3 * 60 * 1000,
},
adapter: 'redis',
host: 'localhost',
port: 6379,
db: 0,
prefix: 'sess:',
}
您可以看到我将 cookie 时间设置为 3 分钟。在这两者之间,我点击了第二个 API。有人发现这有什么错误吗?
最佳答案
第二个请求必须发送第一个请求设置的 cookie(在 Cookie
header 中)以检索 session 。
默认情况下,作为客户端的浏览器会为域发送 cookie 集。需要指定其他客户端,例如 cURL
。如果您特别想使用 Atom,请检查它是否/如何支持发送 cookie。
Sessions are server-side files that contain user information, while Cookies are client-side files that contain user information. Sessions have a unique identifier that maps them to specific users. This identifier can be passed in the URL or saved into a session cookie.
Most modern sites use the second approach, saving the identifier in a Cookie instead of passing it in a URL (which poses a security risk). You are probably using this approach without knowing it
关于node.js - 无法在 sailsjs 中获取 redis session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42500987/