当我登录到我的PhoneGap应用程序时,一切正常。我可以在当前会话中发出请求,并且我已通过身份验证。如果我完全关闭应用程序并重新启动它,尽管我的会话已经消失。在应用程序重新启动之间,带有connect.sid的cookie不会持续存在--这是一个我无法回避的PhoneGap问题。
如何从cookie中获取connect.sid?如何将其存储在localStorage中?如何在应用程序启动时将connect.sid添加回cookie?
hwamh0ep1#
我使用LocalStorage,它会持续存在,但如果手机需要更多的存储空间,它可以清除您的应用程序浏览器缓存,包括cookie,LocalStorage和/tmp文件。
LocalStorage
/tmp
nx7onnlm2#
假设你已经在变量session_id中有了你的会话ID。您只需使用setItem和getItem方法与本地存储进行交互。设置变量(注意:变量必须是字符串,因为localstorage只能处理此类型。如果你想存储一个对象或数组,你需要用JSON.stringify()将它转换成json)
session_id
JSON.stringify()
window.localStorage.setItem("sessionid", session_id);
从本地存储获取会话ID
var id= window.localStorage.getItem("sessionid");
pb3skfrl3#
将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 }) }));
eoigrqb64#
您可以使用以下步骤:
deviceready
4条答案
按热度按时间hwamh0ep1#
我使用
LocalStorage
,它会持续存在,但如果手机需要更多的存储空间,它可以清除您的应用程序浏览器缓存,包括cookie,LocalStorage
和/tmp
文件。nx7onnlm2#
假设你已经在变量
session_id
中有了你的会话ID。您只需使用setItem和getItem方法与本地存储进行交互。设置变量(注意:变量必须是字符串,因为localstorage只能处理此类型。如果你想存储一个对象或数组,你需要用
JSON.stringify()
将它转换成json)从本地存储获取会话ID
pb3skfrl3#
将session_id保存在本地存储中并不是更好的方法。当你的服务器重新启动时,我将被清除。您需要将会话数据保存在数据库中。下面是mongodb的例子。没有额外的编码,只需要在会话声明中传递你的数据库连接字符串。
eoigrqb64#
您可以使用以下步骤:
deviceready
处理程序中,从持久存储中读取会话cookie,然后将其设置在文档上,这与前一个项目符号相反(允许您处理应用程序重启)