当前位置: 首页 > 知识库问答 >
问题:

会话存储在mongoDB商店中,但在生产过程中不存储在浏览器中[已解决]

席兴平
2023-03-14
  • 我写了一个与快速应用编程接口的反应应用程序
  • 我在授权的快速会话中实现了oauth2
  • 我部署到Netlify的客户端-https://keen-bhaskara-257c68.netlify.app/
  • 这里是回购:https://github.com/ThevinSilva/loghorizonServer
  • 服务器端到Heroku-https://loghorizon-server.herokuapp.com/
  • 这里是回购:https://github.com/ThevinSilva/loghorizonClient
  • 设置当前cors
//cloudinary
require("dotenv").config();
cloudinary.config({
  cloud_name: "loghorizon",
  api_key: process.env.CLOUDINARY_API_KEY,
  api_secret: process.env.CLOUDINARY_SECRET,
});
require("./config/passport")(passport);

//MongoDB
connectDB();

//---------------------------------- SERVER ----------------------------------
const app = Express();
const httpServer = http.createServer(app);
const io = Socket(httpServer, {
  cors: {
    origin: process.env.CLIENT_SIDE_URL,
    methods: ["GET", "POST"],
    allowedHeaders: ["my-custom-header"],
    credentials: true,
  },
});

app.use(
  cors({
    origin: process.env.CLIENT_SIDE_URL, // allow to server to accept request from different origin
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    credentials: true, // allow session cookie from browser to pass through
  })
);

//----------------------------------  MIDDLEWARE ----------------------------------
// increase bandwidth to allow for base64 strings
app.use(Express.json({ limit: "40mb", extended: true }));
app.use(Express.urlencoded({ limit: "40mb", extended: true }));
app.set("trust proxy", 1);
app.use(
  Session({
    name: "LHsession",
    secret: process.env.COOKIE_SECRET,
    resave: true,
    store: new MongoStore({ mongooseConnection: mongoose.connection }),
    cookie: {
      sameSite: false,
      maxAge: 8.64e7,
      secure: false,
      httpOnly: false,
    },
  })
);
// utility for monitoring requests
app.use(Morgan("dev"));

//---------------------------------- Pasport config ----------------------------------
app.use(passport.initialize());
app.use(passport.session());




该项目在我的开发环境中完美地工作(在多台计算机上测试)。抛出以下错误:已被CORS策略阻止:没有访问-控制-允许-起源...

重要的是要注意,除了我被重定向回我的web应用程序会话时没有存储外,带有帐户的实际授权页面会显示出来。

不言而喻,这些都是无效的

  • 我读到添加line应用程序。集合(“信任代理”)
app.set("trust proxy", 1);
app.use(
  Session({
    name: "LHsession",
    secret: process.env.COOKIE_SECRET,
    resave: true,
    store: new MongoStore({ mongooseConnection: mongoose.connection }),
    cookie: {
      sameSite: false,
      maxAge: 8.64e7,
      secure: false,
      httpOnly: false,
    },
  })
);
  • 在Axios中,我添加了凭据
const server = axios.create({
  withCredentials: true,
  baseURL: process.env.REACT_APP_SERVER + "/board",
});

  • 我读了许多线程这一个似乎很有前途,可能会工作,但我希望客户端和服务器是分开的-部署到heroku和netlify后,快速会话不会持久
  • 我是一个17岁的业余爱好者,可能有点不知所措,请把我不存在的网络知识记下来。也许给我一些材料来读
  • 我检查的环境变量已成功输入
  • 文档可能有点奇怪抱歉
  • 在最终的react构建中有很多错误和警告,但我认为这在这里并不重要

共有1个答案

东郭臻
2023-03-14

问题解决了,我在我的网站域名下注册了这两个,现在它就像一个符咒。虽然没有解决cors问题,但我还是设法让我的项目开始工作。更具决定性和彻底性的潜在罪魁祸首是:跨域会话Cookie(Netlify上Heroku React应用程序上的Express API)

 类似资料:
  • 我们有一个在线商店,在三个表中存储产品详细信息: 产品(名称、描述、品牌)-总计10,000个条目 产品-变体(大小、价格、可用性)-总计80.000项 产品-属性(颜色)-总计60.000项 这给出了大约400.000项的总组合。 示例: 产品为“Nike Air Max” 变体是“尺寸36,70美元”、“尺寸37,72美元”、“尺寸38,74美元” 属性为“Color Red”和“Color

  • 我第一次使用JSON Web令牌(JWT)。我正在制作一个节点。js应用程序。我想使用JWT进行身份验证。根据文档,我将JSON令牌返回到前端。 但是我不知道如何将这个JSON令牌保存到我的浏览器头中,这样它就不会丢失,并随头一起再次发送到后端。如何将它保存在我的浏览器存储中,并在每次向后端发送请求时将其添加到请求头中?

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。

  • 我的应用程序的注销功能面临一个问题。 问题 调用req.session.destroy不会仅在生产中从Sessions MongoDB集合中删除会话数据。 请求命中服务器,logout方法运行,destroy函数没有返回错误,在会话上运行console.log显示它是空的,但在页面刷新上用户仍然登录,检查db.sessions.find()显示会话数据未被触及。 我认为子域的设置与此有关,正如预期