Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 重定向到时会话重置/_Node.js_Express_Cookies_Web Applications - Fatal编程技术网

Node.js 重定向到时会话重置/

Node.js 重定向到时会话重置/,node.js,express,cookies,web-applications,Node.js,Express,Cookies,Web Applications,我有一个支持Express 4的web应用程序,它使用Express session 在我的前端,我有一个“主页”按钮,用户可以点击返回根目录。 但是,当我这样做时,我的快速会话被清除 我的设置是: { store: new KnexSessionStore(), secret: 'my secret', resave: false, saveUninitialized: false, name: 'my name', rolling: true, co

我有一个支持Express 4的web应用程序,它使用Express session

在我的前端,我有一个“主页”按钮,用户可以点击返回根目录。 但是,当我这样做时,我的快速会话被清除

我的设置是:

{
   store: new KnexSessionStore(),
   secret: 'my secret',
   resave: false,
   saveUninitialized: false,
   name: 'my name',
   rolling: true,
   cookie: { maxAge: 60 * 60 * 1000 }
 }
我尝试过处理
resave
saveUninitialized
,以及
滚动
属性,但没有实际效果。我还尝试使用会话cookie,但没有任何区别

实际上,我没有在
/
路径上运行自己的任何代码:我只是有一个Express静态服务器,它为单个
index.html
提供服务,并附加了一个React应用程序:

const express = require('express')
const app = express()
app.use('/', express.static('/my/app/path'))
app.listen(3000, () => console.log('Running on 3000'))
另外,如果我登录,然后关闭浏览器,然后重新打开应用程序的浏览器,我将保持登录状态,并且我的会话仍然有效(正如人们所期望的那样)。只有当我明确导航到
/
时,才会出现此问题

我要导航到
/
的代码是:

服务器:

const api = express.Router()
api.get('/redirect', redirect)
function redirect(req, res, next) {
  if (req.query.target) { return res.redirect(req.query.target) }
  next()
}

app.use('/api', api)
客户:

<Button
  className='margin-10-right'
  onClick={ () => location.href = '/api/redirect?target=/' }
>
  Home
</Button>
location.href='/api/redirect?target=/'}
>
家
我还尝试将
location.href
直接设置为
/
,效果相同

注意:重定向到
/
而不是使用React state返回主页(例如使用
React router
)的原因是,我在不同的URL端点有多个不同的React应用程序。我的根URL基本上是一个应用程序,它是其他应用程序的启动平台,每个应用程序都位于各自的端点,这些其他应用程序需要能够返回到启动平台


任何想法都值得赞赏

你能更新你的问题以显示你点击主页路线时运行的代码吗?@DerickBailey done。感谢您抽出时间来查看!express应用程序设置中的哪个位置配置了express会话?我认为这需要在
应用程序之前进行。使用设置
/
手柄的
是的,它是。我只是忘了包括那部分。会议总体上运作良好;只是在这个特定的情况下,它正在重置,这就是问题所在。我现在没有主意了,对不起:(