繁体   English   中英

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

[英]Javalin sessionAttribute() isn't Persisting Between Requests

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

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

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

在 React 代码中,它侦听来自此控制器的成功响应,然后重新路由到/dashboard页面。 /dashboard页面加载数据,我通过从会话中获取 userHash 来获取适合用户的数据,如下所示:

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

但是,这总是返回 null。

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

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

编辑 - 添加显示 JSESSIONID 的响应信息在此处输入图片说明

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

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

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

credentials: "include",

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM