node.js - 无法在 sailsjs 中获取 redis session

标签 node.js rest session redis sails.js

我有两个 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。

参见 Cookies & sessions:

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/

相关文章:

node.js - 为什么我无法将我的包发布到 npmjs

node.js - MongoDB 不更新双嵌套数组中的子文档(使用 Mongoose FindByIdAndUpdate) - 已知确切位置

java - 如何在 Spring Controller 中请求请求的来源和主体

php - 显示带有每个项目的删除按钮的项目的购物车

node.js - 为什么 NodeJS KeepAlive 似乎没有按预期工作?

node.js - 当内容类型为 application/octet-stream 时 Restify 获取 request.body

rest - 使用 Flask-Security 作为 REST API 的一部分

java - 为什么我得到 org.codehaus.jackson.map.JsonMappingException : No suitable constructor found for type

php - session ID : Why does it need to be updated?

javascript - 制作索引文件,如果 session 不存在,则通过 AJAX 加载登录屏幕