gpt4 book ai didi

Javalin sessionAttribute() 不会在请求之间持久化

转载 作者:行者123 更新时间:2023-11-30 10:05:34 30 4
gpt4 key购买 nike

我正在将 Javalin 设置为微服务,为我的 React 应用程序提供 API 端点。在本地,Javalin 在端口 7070 上运行,而 React 在端口 3000 上运行(通过带有 create-react-app 的内置服务器)。

我正在尝试连接登录/注销服务,并且在我的登录 Controller 中有这段代码。

boolean isValid = User.isPasswordValid(u, password);
if (isValid)
{
ctx.sessionAttribute("currentUser", u.userHash);
}

在 React 代码中,它监听来自该 Controller 的成功响应,然后重新路由到 /dashboard 页面。 /dashboard 页面加载数据,我通过像这样从 session 中获取 userHash 来获取适合用户的数据:

    String userHash = ctx.sessionAttribute("currentUser");

但是,这总是返回 null。

这似乎应该可行,甚至与 Javalin 网站上发布的教程代码匹配 https://javalin.io/tutorials/website-example

是 React 代码和 Javalin 运行在不同的服务器上导致这行不通吗?我尝试用 cookieStore() 替换 sessionAttribute() 并且它有相同的 null 问题。

编辑 - 添加显示 JSESSIONID 的响应信息 enter image description here

最佳答案

在与 Javalin 创建者讨论后,正确的答案是在服务器创建中包含这一行:

app.before(ctx -> ctx.header("Access-Control-Allow-Credentials", "true"));

并确保您的 JavaScript 调用包含选项:

credentials: "include",

关于Javalin sessionAttribute() 不会在请求之间持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187146/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com