2017-10-03 2 views
3

Wir haben Spring Sessions mit Redis als Session-Speicher konfiguriert. Bei einer größeren Auslastung endete es in einem Ergebnis, bei dem die Benutzer zufällige Sitzungsdaten erhalten.Springssession und Redis-Mixing-Sitzungen

Leider sind wir nicht in der Lage, es wieder zu reproduzieren und es ist nicht reproduzierbar in Testumgebung.

Hat jemand ähnliche Erfahrung und kann vielleicht eine Richtung zeigen, was zu sehen ist?

+0

Wir haben ein ähnliches Problem in unserer Anwendung auftreten, haben Sie die Ursache/eine Lösung? – Tim

Antwort

1

habe ich Frühjahrssitzung mit redis Session-Speicher in meinem Projekt wie folgt verwendet, funktioniert es normal, es teile ich, hoffe, es hilft!

verwendeten Feder Boot Starter-Version: 1.4.3

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-configuration-processor</artifactId> 
     <optional>true</optional> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.session</groupId> 
     <artifactId>spring-session</artifactId> 
    </dependency> 


    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-redis</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>4.2.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>biz.paluch.redis</groupId> 
     <artifactId>lettuce</artifactId> 
     <version>3.5.0.Final</version> 
    </dependency> 

Frühjahrssitzung redis Konfigurationsklasse:

package az.com.cybernet.aas.config; 

import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Bean; 
import org.springframework.data.redis.connection.lettuce. 
LettuceConnectionFactory; 
import org.springframework.session.data.redis.config.annotation.web.http. 
EnableRedisHt 
tpSession; 
import org.springframework.session.web.http.CookieHttpSessionStrategy; 
import org.springframework.session.web.http.CookieSerializer; 
import org.springframework.session.web.http.DefaultCookieSerializer; 
import org.springframework.session.web.http.HttpSessionStrategy; 



@EnableRedisHttpSession 
public class RedisConfig { 

@Value("${spring.redis.host}") 
private String hostname; 
@Value("${spring.redis.port}") 
private String port; 
// @Value("${spring.redis.password}") 
// private String password; 

@Bean 
public LettuceConnectionFactory connectionFactory() { 
    LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory(); 
    connectionFactory.setHostName(hostname); 
    // connectionFactory.setPassword(password); 
    connectionFactory.setDatabase(2); 
    connectionFactory.setPort(Integer.parseInt(port)); 
    return connectionFactory; 
} 

@Bean 
public CookieSerializer cookieSerializer() { 
    DefaultCookieSerializer serializer = new DefaultCookieSerializer(); 
    serializer.setCookieName("JSESSIONID"); 
    serializer.setCookiePath("/"); 
    serializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$"); 
    return serializer; 
} 

@Bean 
public HttpSessionStrategy strategy() { 
    CookieHttpSessionStrategy cookieHttpSessionStrategy = new CookieHttpSessionStrategy(); 

    cookieHttpSessionStrategy.setCookieSerializer(cookieSerializer()); 
    return cookieHttpSessionStrategy; 

} 

}