Spring Security 浏览器不存储JWT cookie,即使Postman正确显示cookie

vddsk6oq  于 2023-06-06  发布在  Spring
关注(0)|答案(1)|浏览(206)

我尝试用spring和react构建一个web应用程序。在授权中,我发送了一个这样的JWT cookie:

final String jwt = jwtUtil.generateToken(user);
Cookie jwtCookie = new Cookie("jwt", jwt);
jwtCookie.setHttpOnly(true);
jwtCookie.setPath("/");
response.addCookie(jwtCookie);
return new ResponseEntity<String>(jwt, HttpStatus.OK);

当我在Postman中发送请求时,cookie会正确显示:Postman screenshot
现在我想用这样的React来验证自己:

return axios
        .post("http://localhost:8080/auth", {}, {
            auth: {
                username: uname,
                password: pass
            }

        })
        .then(response => {
            console.log(response)
            return response.data;
        });

但是,即使授权成功,我甚至可以将jwt-token存储在本地存储中,cookie也不会出现在浏览器中。
有人知道怎么解决吗?
谢谢你的帮助!

gfttwv5a

gfttwv5a1#

这是CORS的问题。您必须将withCredentials标志设置为true,才能进行cookie交换。

axios.defaults.withCredentials = true;

并允许服务器端的凭据:

registry
  .addMapping("/**")
  .allowedOrigins("http://localhost:3000")
  .allowCredentials(true);

相关问题