我在使用RequestionContextHolder时遇到问题。我在上下文持有者的属性中存储了一个keycloak令牌。我在那一行得到属性:

RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();

我多次需要此密钥隐藏令牌。

首先,刚登录后,我得到了requestAttributes然后是令牌(一​​切都很好)。

然后,稍后在使用该应用程序时(在单击几次之后),我需要它,RequestContextHolder.getRequestAttributes()返回null(然后不太好)。

我不明白为什么第一次都运行良好,然后返回null。

我试图将其放在web.xml中,但它没有任何改变:

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>


有人可以帮忙吗?

最佳答案

应用程序中的每次点击都是一个单独的请求,因此它们都有一个单独的RequestContext。似乎仅将此登录请求的令牌放入请求上下文中。大概是通过keycloak集成的。

在以下请求中,您可能需要一些识别用户的信息。这将是一个会话,有不同的类型可用。然后,您的客户端将需要在每个请求中发送一个sessionid或令牌。

有关更多详细信息,您需要为我们提供更多背景信息。您是如何集成密钥斗篷的?您想对令牌做什么?

关于java - RequestContextHolder.getRequestAttributes()在第二次调用时返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50857458/

10-11 03:24