我尝试过广泛搜索解决方案。当作为localhost运行时,该应用程序可以正常运行,从而使用户长时间通过身份验证。但是当我在我的服务器上运行并登录时,就好像连接在一段时间后重置,我被迫再次登录。
我的应用(有更多的依赖关系,但我猜这些是最相关的):
我的服务器:
这个问题很可能与no-ip.org和动态ip有关。有任何想法吗?
还粘贴应用配置代码:
app.configure ->
app.set "port", process.env.PORT or 8080
app.set "views", __dirname + "/views"
app.set "view engine", "jade"
app.locals.compileDebug = false #Made jade a little more compact
app.use express.favicon()
# app.use express.logger("tiny")
app.use express.logger("dev")
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser("awesome unicorns")
app.use express.session(
secret: "awesome unicorns"
cookie:
maxAge: 2592000000
)
app.use flash()
app.use passport.initialize()
app.use passport.session()
app.use app.router
app.use express.static(path.join(__dirname, "public"))
更新
我按照评论者RobertKlep的建议更新了代码,并重新访问了我的页面。这次我将运行应用程序的会话cookie作为localhost与服务器进行比较。 localhost和服务器的cookie未正确设置。问题might be related to this discussion。
第二次更新加最终解决方案
问题解决了!事实证明我运行的隐藏节点进程阻止了应用程序的正确更新。此外,由于服务器正在侦听端口80,因此我引发了冲突,因为我没有使用app.listen(81);
答案 0 :(得分:1)
这看起来不对:
app.use express.session(
secret: "awesome unicorns"
maxAge:
expires: new Date(Date.now() + 3600000)
)
maxAge
不是express.session
的论据,我认为你的意思是cookie
:
app.use express.session(
secret : ...
cookie :
expires : new Date(Date.now() + 3600000)
)
此外,如果像这样使用,则只会评估一次失效日期:在应用程序启动时。因此,在运行应用程序一小时后,任何新会话都将立即过期。
改为使用maxAge
,它设置相对于创建会话的时刻的到期日期:
app.use express.session(
secret : ...
cookie :
maxAge : 3600000
)