无法在sailsjs中获得redis会话

时间:2017-02-28 05:38:40

标签: node.js rest session redis sails.js

我有两个API。当我从Atom点击第一个API时,我在会话中设置一个成功的参数。但是当我点击第二个API并尝试通过req.session获取会话时,它会创建一个新会话,而不是提供前一个会话。请将第一个API中设置的会话和参数i添加到第二个API中。

下面是我设置会话参数的第一个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 {"cookie":{"originalMaxAge":180000,"expires":"2017-02-28T05:03:25.304Z","httpOnly":true,"path":"/"},"message":"my message"}

下面是我尝试检索会话的第二个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:',
}

你可以看到我设置了3分钟的cookie时间。在我之间我打了第二个API。有人发现任何错误吗?

1 个答案:

答案 0 :(得分:0)

第二个请求必须发送第一个请求(在Cookie标头中)设置的cookie,以便检索会话。

默认情况下,作为客户端的浏览器会为域发送cookie集。需要指定其他客户端,例如cURL。如果您特别想使用Atom,请检查它是否/如何支持发送cookie。

请参阅Cookies & sessions

  

会话是包含用户信息的服务器端文件,而Cookie是包含用户信息的客户端文件。会话具有唯一标识符,可将其映射到特定用户。该标识符可以在URL中传递或保存到会话cookie中。

     

大多数现代网站使用第二种方法,将标识符保存在Cookie中,而不是将其传递到URL中(这会带来安全风险)。你可能在不知情的情况下使用这种方法