0

我不管理设置会话超时我Jhipster Web应用程序(春季启动+弹簧安全+ angularJS)如何设置会话超时弹簧启动tomcat的嵌入

我只是做了最简单的方法:

... 
/** 
* Configuration of web application with Servlet 3.0 APIs. 
*/ 
@Configuration 
public class WebConfigurer implements ServletContextInitializer, EmbeddedServletContainerCustomizer 
{ 
.... 
@Inject 
    private ServerProperties serverProperties; 
.... 
/** 
    * Set up Mime types. 
    */ 
    @Override 
    public void customize(ConfigurableEmbeddedServletContainer container) 
    { 
     MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); 
     // IE issue, see https://github.com/jhipster/generator-jhipster/pull/711 
     mappings.add("html", "text/html;charset=utf-8"); 
     // CloudFoundry issue, see https://github.com/cloudfoundry/gorouter/issues/64 
     mappings.add("json", "text/html;charset=utf-8"); 
     container.setSessionTimeout(serverProperties.getSession().getTimeout(), TimeUnit.MINUTES); 
     log.info("SessionTimeout = {}", serverProperties.getSession().getTimeout()); 
     container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/login")); 
     container.setMimeMappings(mappings); 
    } 
... 

@ConfigurationProperties(prefix = "server", ignoreUnknownFields = true) 
public class ServerProperties 
{ 
    private Session session = new Session(); 

    public static class Session 
    { 
     private int timeout = 6; 

     public int getTimeout() 
     { 
      return timeout; 
     } 

     public void setTimeout(int timeout) 
     { 
      this.timeout = timeout; 
     } 

    } 

    public Session getSession() 
    { 
     return session; 
    } 

    public void setSession(Session session) 
    { 
     this.session = session; 
    } 

} 

Application.yml

server: 
    port: 8080 
    session: 
     timeout: 1 

日志通知在1分钟内长度的会话:

2016-07-28 16:17:03.103 INFO 6248 --- [ restartedMain] com.tess2i.config.WebConfigurer   : SessionTimeout = 1 

启动WebApp后,我登录了WebApp,然后等了1分多钟。然后我点击某处查询服务器。所有人都还在工作。没有会话错误/重定向。

还有什么需要做的?

+0

有没有必要为您的自定义实现 - 默认情况下使用'server.session.timeout'属性。你确定你没有使用JWT认证吗?还是记得启用? –

+0

根据文档,该属性的单位是秒。 server.session.timeout =#以秒为单位的会话超时。 http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html –

回答

1

首先,您不需要提供任何自定义实现,应通过Spring Boot开箱即可支持设置server.session.timeout,有关更多详细信息,请参见the official documentation

就超时和重定向而言,您确定没有使用记忆我或JWT身份验证或其他不依赖于HTTP会话及其到期时间的身份验证方法吗?

+0

是的你是对的,在jhispter有一个记住我的身份验证。但是我只是添加了像这样的标记有效性:http.csrf()。和()。addFilterAfter(new CsrfCookieGeneratorFilter(),CsrfFilter.class).exceptionHandling() .accessDeniedHandler(new CustomAccessDeniedHandler())。authenticationEntryPoint(authenticationEntryPoint) .and().messageMe() .rememberMeServices(rememberMeServices).rememberMeParameter(“remember-me”)。tokenValiditySeconds(10).key(env.getProperty(“jhipster.security.rememberme.key”))。 。 .....但没有任何变化 –

+0

那么,这是一个完全不同的问题,与当前的问题无关 - 你能否为这种情况开放另一个问题并提供更详细的代码示例?至于这个问题,我建议你禁用记住我的身份验证,并验证会话超时是否工作。 –