Explorar el Código

Session功能优化@20210309:在application.yml中新增define.session.timeout属性,实现Session超时设置。

huangbo %!s(int64=4) %!d(string=hace) años
padre
commit
d920aa2224

+ 24 - 4
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/config/RedisSessionConfig.java

@ -1,14 +1,34 @@
1 1
package com.ai.ipu.server.config;
2 2

3
import org.springframework.beans.factory.annotation.Qualifier;
4
import org.springframework.beans.factory.annotation.Value;
5
import org.springframework.context.ApplicationEventPublisher;
6
import org.springframework.context.annotation.Bean;
3 7
import org.springframework.context.annotation.Configuration;
4
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
8
import org.springframework.context.annotation.Primary;
9
import org.springframework.data.redis.core.RedisOperations;
10
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
5 11

6 12
/**
7 13
 * 添加@EnableRedisHttpSession来开启spring session支持
8 14
 */
15
/*设置超时方案二:设置maxInactiveIntervalInSeconds*/
9 16
@Configuration
10
// maxInactiveIntervalInSeconds 默认是1800秒过期
11
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
17
/*@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)*/
12 18
public class RedisSessionConfig {
13

19
    
20
    /*设置超时方案一:在application.yml中设置define.session.timeout*/
21
    @Value("${define.session.timeout}")
22
    private int sessionTimeout = 1800;
23
 
24
    @Primary
25
    @Bean
26
    public RedisOperationsSessionRepository sessionRepository(
27
        @Qualifier("sessionRedisTemplate") 
28
        RedisOperations<Object, Object> sessionRedisTemplate, ApplicationEventPublisher applicationEventPublisher) {
29
        RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);
30
        sessionRepository.setApplicationEventPublisher(applicationEventPublisher);
31
        sessionRepository.setDefaultMaxInactiveInterval(sessionTimeout);
32
        return sessionRepository;
33
    }
14 34
}

+ 4 - 1
ipu-rest-scaffold/src/main/resources/dev/application.yml

@ -27,4 +27,7 @@ spring:
27 27
web:
28 28
  root: webapp/
29 29
logging:
30
  file: target/logs/${project.artifactId}.log
30
  file: target/logs/${project.artifactId}.log
31
define:
32
  session:
33
    timeout: 1800