Spring React 和 Sessions.. 如何保持会话

IT技术 reactjs spring spring-boot
2021-05-19 13:28:53

我已经设置了我的 spring 来维护一个对象上的 HTTP 会话,如下所示:

@Component
@SessionScope
public class Basket { .. }

控制器:

@PostMapping(path="/basket/addItem/{user}", consumes = "application/json", produces = "application/json")
public Basket createBasket(@PathVariable String user, @RequestBody Item item) {
    System.out.println("POSTING..................................");
    return basketService.addItem(user, item);       
}

现在,当我使用 REST 客户端时,在 firefox 中我可以看到会话 bean 是在持续时间内创建和维护的 - 多次调用。我可以附加到对象。如果我尝试另一个客户端,它会使用自己的 bean 获得自己的会话。伟大的..

spring 记录以下内容:

 Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [269] milliseconds.

然而,我试图在 react 中创建一个基本的前端,当 react 使用 axios 发出请求时,它每次都会得到一个新的 bean,这意味着会话必须在每次调用后结束。那是对的吗?或者我没有将它绑定到react应用程序......

也许我采取的方法不正确,也许我应该使用不同的方法,我正在尝试了解 Spring Boot,所以它是一个基本项目......现在我想维护购物车的用户会话。所以后续调用我可以附加到对象...

1个回答

通过将以下内容添加到我的控制器中,一切都开始工作了。

@CrossOrigin(origins = { "http://localhost:3000" }, allowedHeaders = "*", allowCredentials = "true")