Как установить тайм-аут сессии с помощью встроенного tomcat с весенней загрузкой

0

Мне не удается установить тайм-аут сеанса в моем Jeepster WebApp (весенняя загрузка + 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 минуты. Затем я нажимаю на сервер запроса. Все еще работало. Ошибка сеанса/перенаправление.

Что еще нужно сделать?

  • 0
    Там не было необходимости для вашей пользовательской реализации - по умолчанию используется свойство server.session.timeout . Вы уверены, что не используете аутентификацию JWT? Или я запомнил?
  • 0
    Согласно документации, единицы этого свойства в секундах. server.session.timeout = # Время ожидания сеанса в секундах. docs.spring.io/spring-boot/docs/current/reference/html/...
Теги:
spring-boot
spring-security
jhipster
session-timeout

1 ответ

1

Прежде всего, вам не нужно было предоставлять какую-либо пользовательскую реализацию, server.session.timeout установка server.session.timeout должна поддерживаться с помощью Spring Boot из коробки, более подробную информацию см. В официальной документации.

Что касается тайм-аутов и перенаправлений, уверены ли вы, что вы не используете аутентификацию с использованием mem-me или JWT или другие методы проверки подлинности, которые не зависят от сеансов HTTP и их истечения?

  • 0
    Да, вы правы, в jhispter есть аутентификация "запомнить меня". Но я просто добавил действительность токена следующим образом: http.csrf (). And (). AddFilterAfter (new CsrfCookieGeneratorFilter (), CsrfFilter.class) .exceptionHandling () .accessDeniedHandler (новый CustomAccessDeniedHandler ()). AuthenticationEntryPoint (authentication). () .rememberMe () .rememberMeServices (запомнитьMeServices) .rememberMeParameter ("запомнить меня"). tokenValiditySeconds (10) .key (env.getProperty ("jhipster.security.rememberme.key")). and (). ..... но ничего не изменится
  • 0
    Ну, это совсем другая проблема, и она не имеет ничего общего с текущим вопросом. Не могли бы вы открыть другой вопрос для этого сценария и предоставить более подробный пример кода? Что касается этого вопроса, я предлагаю вам отключить аутентификацию Запомнить меня и проверить, работает ли тайм-аут сеанса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню