当前位置: 首页 > 知识库问答 >
问题:

Spring Http会话with Redis不保存SESSION cookie值

危寒
2023-03-14

我们正在用Spring云构建一个基于微服务的系统,我们使用Zuul作为边缘服务器和一些后端微服务。在其中一个后端服务中,我们使用Redis来管理HttpSession,并存储一些与用户相关的对象。

直接访问微服务时一切正常,但通过Zuul访问时出错,因为备份微服务总是获得一个新的HttpSessionID。我尝试使用jssessionidSESSION将cookie转发给使用zuupFilter的微服务,但微服务最终没有使用cookie值在Redis中创建spring:sessions。

任何人都可以帮助决定如何让Spring会话使用Cookie值,而不是HttpSession。ID

我们正在使用:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Camden.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

共有2个答案

梁丘赞
2023-03-14

只要用这个在application.properties它会解决你的问题

zuul.sensitive-headers=
高朝明
2023-03-14

我试过类似的方法。你可以看看这里:https://github.com/khauser/microservices4vaadin

需要对DefaultCookieSerializer进行更改:

@Bean
public HttpSessionStrategy httpSessionStrategy() {
  CookieHttpSessionStrategy cookieHttpSessionStrategy = new CookieHttpSessionStrategy();
  DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
  cookieSerializer.setCookieName("JSESSIONID");
  cookieSerializer.setCookiePath("/");
  cookieSerializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
  cookieHttpSessionStrategy.setCookieSerializer(cookieSerializer);
  return cookieHttpSessionStrategy;
}
 类似资料:
  • 我按照教程步骤尝试SBT: 有什么想法可以解决这个问题吗?

  • 问题内容: 我正在使用Node.js,Express和Redis构建一个用于会话管理的网站。无论出于何种原因,如果我有一个会话变量(在此示例中),并且刷新页面,则不会保存该变量,但是,如果我在设置了变量后调用,则确实会将其保存到Redis(redis- cli监视器显示此内容-不调用表示变量不存在,而调用则显示该变量)。 我正在使用它来设置和启动服务器: 然后,在那条路线中,我有: 由此,我应该能

  • 我有个问题,希望你能帮助我。我的控制器中有一个创建CodeIgniter会话的方法。为确保创建正确,我在创建会话后执行函数。然后,在我的Ajax请求中,我放置了一个以刷新页面。 这就是我的方法: 这种方法称为槽式Ajax,如; 最后,在Ajax请求中,我做了,但是当页面刷新时,这将把我重定向到,并且当我想检查包含

  • 希望你能帮助我。当运行应用程序时,它正在工作,但当我再次运行时,它不工作,并且没有发现错误。我不知道为什么,但有时它起作用,但有时它不起作用。这是我的密码。。。。 公共类filldisResult扩展了AppCompative活动{ SharedPreferences SharedPreferences=getSharedPreferences(SCOREPREFERENCE,MODE_PRIVA

  • 问题内容: 我发现自己经常使用Python的解释器来处理数据库,文件等- 基本上是半结构化数据的许多手动格式化。我没有按照我的意愿正确地保存和清理有用的位。有没有一种方法可以将我的输入保存到外壳中(数据库连接,变量分配,很少用于循环和逻辑位)-交互式会话的一些历史记录?如果我使用类似的东西,则会收到过多的标准输出噪音。我真的不需要腌制所有对象- 尽管如果有解决方案,那就可以了。理想情况下,我只剩下

  • 我试图将在一个视图中获得的查询结果保存到会话中,并在另一个视图中检索它,所以我尝试了如下方式: 然而,这给了我 我想知道这到底是什么意思,我应该怎么做?或者除了使用会话之外,还有其他方法可以做我想做的事情?