节点中的永久会话存储

Ste*_*her 8 javascript mysql node.js express angularjs

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

我注意到每当我重新启动应用程序时,会话数据都会丢失,我的玩家必须重新登录他们的帐户.这不是一个huuuge交易,但我想知道是否有办法编辑我的server.js页面而不重新启动应用程序,并记录每个人?

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

(第二个注意:我正在使用mysql,nodejs,angularjs,express.io这一切,以防万一有人问)

Som*_*ens 7

没有办法编辑文件(并加载更改),而无需重新启动服务器并重新加载文件.相反,将会话数据存储在内存以外的其他位置.我知道你正在使用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
}));
Run Code Online (Sandbox Code Playgroud)

这将在每个用户的计算机上放置一个仅限HTTP(即用户无法查看/使用它)cookie.即使在服务器重启之后,connect-mysql也能够通过此cookie在MySQL中使用其会话数据的用户.