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

当我login到我的PhoneGap应用程序,一切正常。 我可以在本届会议上提出要求,并获得authentication。 如果我完全closures应用程序,并重新启动它,虽然我的会话不见了,但是connect.sid的cookie不会在app重启之间持续下去 – 这是我无法解决的一个phonegap问题。

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

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

如何将connect.sid添加到应用程序启动的cookie上?

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

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

设置一个variables(注意:variables必须是一个string,因为localstorage只能处理这种types。如果你想存储一个对象或数组,你需要使用JSON.stringify()将其转换成json)。

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

从本地存储获取您的sessionid

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

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

 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 }) })); 

您可以使用以下过程:

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