【发布时间】:2016-12-03 00:51:31
【问题描述】:
我无法在我的 Jhipster WebApp 中设置会话超时(spring boot + Spring security + angularJS)
我只是做了最简单的方法:
...
/**
* 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分钟多。然后我点击某处查询服务器。一切仍在工作。没有会话错误/重定向。
还有什么需要做的?
【问题讨论】:
-
不需要您的自定义实现 - 默认使用
server.session.timeout属性。你确定你没有使用 JWT 身份验证吗?还是启用了记住我功能? -
根据文档,该属性的单位是秒。 server.session.timeout = #会话超时以秒为单位。 docs.spring.io/spring-boot/docs/current/reference/html/…
标签: angularjs spring-security spring-boot session-timeout jhipster