javascript - Node 中的永久 session 存储

标签 javascript mysql node.js angularjs express

我现在有一个 Node 服务器正在运行,我在不开发时使用 npm forever 来保持它运行,在我编辑时使用 npm nodemon (在编辑/上传时重新启动应用程序)。

我注意到每当我重新启动我的应用程序时, session 数据都会丢失并且我的玩家必须重新登录他们的帐户。这不是什么大问题,但我想知道是否有一种方法可以在不重新启动应用程序并让所有人注销的情况下编辑我的 server.js 页面?

(请注意,这仅适用于 server.js 或模块编辑。提供的 .html.js 页面不需要重新启动)

(第二个注意事项:我正在使用 mysql、nodejs、angularjs、express.io 来处理所有这些,以防有人问起)

最佳答案

如果不重新启动服务器并重新加载文件,就无法编辑文件(并加载更改)。相反,将您的 session 数据存储在内存以外的地方。我知道你在使用 MySQL,所以使用 connect-mysql包(对于 redis、MongoDB 等,还有其他像这样的包)。

这就像将其放入您的 app.js 文件一样简单:

var MySQLStore = require('connect-mysql')(express)
    ,  options = {
      config: {
        host : 'place.stuff',
        user: 'RUJordan',
        password: 'hunter2',
        database: 'SomeKittensIsGreat'
      }
  };

app.use(express.session({
    secret: 'UpvoteThisAnswer',
    store: new MySQLStore(options),
    cookie: { maxAge: 2592000000 } // 30 days
}));

这将在每个用户的计算机上放置一个仅限 HTTP(即用户无法看到/使用它)的 cookie。即使在服务器重新启动后,connect-mysql 也可以通过此 cookie 在 MySQL 中使用他们的 session 数据来点赞用户。

关于javascript - Node 中的永久 session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22870916/

相关文章:

javascript - 使用适用于 JavaScript 的 Google API 客户端库访问 Google Sites API

javascript - 如何使用 PhantomJS 从页面获取动态 HTML 和 Javascript 值

mysql - MySQL Cluster OSS 和 CGE 版本的区别

mysql - 为什么从 python 调用 MySQL 会报告 SQL 错误?

php - 如何在 SocialEngine 中更新表格

javascript - Node.js njwt 签名验证失败

Node.js MongoDB Find 与投影以排除 _id 仍然返回它

javascript - 如何使用 D3 和 CoffeeScript 将节点替换为图像以实现网络可视化?

javascript - GM_xmlhttpRequest 数据被放置在错误的位置

javascript - 如何解决node.js中阻塞对一个URI的请求的问题?