在localStorage中存储connect.sid而不是cookie

时间:2014-01-07 22:28:45

标签: html5 node.js cordova express connect

当我登录我的PhoneGap应用程序时,一切正常。我可以在当前会话中发出请求,并且我已通过身份验证。如果我完全关闭应用程序并在我的会话消失后重新启动它,那么带有connect.sid的cookie在应用程序重新启动之间不会持续存在 - 这是我无法解决的电话空白问题。

我应该如何从Cookie中获取connect.sid?

我应该如何将其存储在localStorage中?

如何在应用启动时将connect.sid添加回Cookie?

4 个答案:

答案 0 :(得分:1)

我使用LocalStorage并且它仍然存在,但如果手机需要更多存储空间,则可以清除您的应用浏览器缓存,包括Cookie,LocalStorage/tmp文件。

答案 1 :(得分:-1)

假设您的会话ID已在变量session_id中。您只需使用setItem和getItem方法与本地存储进行交互。

设置变量(注意:变量必须是字符串,因为localstorage只能处理这种类型。如果你想存储一个对象或数组,你需要用JSON.stringify()将它转换成json)

window.localStorage.setItem("sessionid", session_id);

从本地存储中获取您的sessionid

var id= window.localStorage.getItem("sessionid");

答案 2 :(得分:-1)

将session_id保存在本地存储中不是更好的方法。当您的服务器重新启动时,我将被清除。 您需要将会话数据保存在数据库中。这是mongodb的例子。没有额外的编码,只需在会话声明中传递您的数据库连接字符串。

var MongoStore = require('connect-mongo')(express);
app.use(express.session({
    secret : "", 
    store : new MongoStore({ 
        db : "database_name",
        host : "database_host", 
        username : "database_username", 
        password : database_password, 
        auto_reconnect : true 
    })
}));

答案 3 :(得分:-1)

您可以使用以下程序:

  • 使用普通javascriptjquery-cookie读取cookie,然后在每个请求中将其保存到持久存储(例如localstorage)(允许您保持会话新鲜度)
  • deviceready处理程序中从持久存储中读取会话cookie,然后在文档上设置它,这与前一个项目符号相反(允许您处理应用程序重启)。