Spring启动+ Spring安全+ hazelcast会话复制无法使其正常工作

问题描述 投票:1回答:1

我试图向angularjs应用程序介绍spring security。后端使用弹簧框架。我使用这里解释的方法来实现后端安全性。

https://samerabdelkafi.wordpress.com/2016/01/25/secure-angularjs-application-with-spring-security/

这适用于单个应用程序实例。

问题是应用程序是群集的,因此必须复制会话。

我尝试使用hazelcast进行会话复制,如下所述:

https://dzone.com/articles/spring-boot-hazelcast-for-session-replication

当我介绍hazelcast时,首先验证是成功的。之后,第一个请求也是成功的。但之后似乎就是这样

org.springframework.security.web.context.HttpSessionSecurityContextRepository无法找到会话...

正如我所说,在配置com.hazelcast.web.WebFilter进行sesion复制之后,这开始发生,如下所示:

  @Bean
public WebFilter webFilter(HazelcastInstance hazelcastInstance) {

    Properties properties = new Properties();
    properties.put("instance-name", hazelcastInstance.getName());
    properties.put("sticky-session", "true");

    return new WebFilter(properties);
}

以下是相关日志:

2017-08-22 15:17:31,593:[DEBUG] [http-nio-7023-exec-2] [HttpSessionSecurityContextRepository]当前没有HttpSession存在

2017-08-22 15:17:31,593:[DEBUG] [http-nio-7023-exec-2] [HttpSessionSecurityContextRepository]没有来自HttpSession的SecurityContext:null。将创建一个新的。

我确信客户端在成功登录后会发送相同的cookie

我无法弄清楚原因。任何指导表示赞赏。

spring-boot spring-security hazelcast
1个回答
0
投票

我可以通过使用春季会议来完成这项工作..

https://docs.spring.io/spring-session/docs/current/reference/html5/guides/java-hazelcast.html

会话在循环负载均衡器后面的两个实例之间成功复制。非常感谢春季会议开发人员......

© www.soinside.com 2019 - 2024. All rights reserved.