我现在有一个 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/