Тайм-аут сеанса Spring Security - очистить кэш браузера - PullRequest
2 голосов
/ 01 февраля 2012

В настоящее время у меня есть веб-приложение, использующее Spring Security и размещенное на сервере JBoss 5.

Моя проблема в том, что если пользователь простаивает в течение нескольких минут, время его сеанса истекает из-за настройки web.xml.Время от времени, когда они пытаются попасть в веб-приложение, когда их сеанс недействителен, они получают ошибку 404.Единственный способ, которым браузер может видеть веб-приложение, - это когда пользователь очищает свой кеш браузера.

Есть ли способ исправить это, чтобы пользователю не приходилось очищать кеш браузера?

Вот мой весенний код безопасности xml

<security:http auto-config="true" use-expressions="true">
    <security:intercept-url pattern="/login" access="permitAll" />
    <security:intercept-url pattern="/resources/**" access="permitAll" />
    <security:intercept-url pattern="/import/trades" access="permitAll" />
    <!-- 
        The roles are prefix with the word ROLE 
        and it is upper case due to ldapAuthoritiesPopulator config section 
    -->
    <security:intercept-url pattern="/**" access="hasAnyRole('ROLE_NBFIEPN_USERS', 'ROLE_NBFIEPN_DEVELOPERS')" />        

    <security:form-login login-page="/login" authentication-failure-url="/login?error=true"/>

    <security:logout />
</security:http>

Вот мой файл web.xml.В настоящее время я установил тайм-аут сеанса на 1 минуту, чтобы повторить проблему.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <display-name>TBA Web Application</display-name>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/spring/security-config.xml
        </param-value>
    </context-param>
    <servlet>
        <servlet-name>horizon</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/spring/applicationContext.xml
                /WEB-INF/spring/applicationContext-service.xml
                /WEB-INF/spring/mvc-config.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>horizon</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Session Timeout in minutes -->  
    <session-config> 
        <session-timeout>1</session-timeout> 
    </session-config>

</web-app>

1 Ответ

5 голосов
/ 01 февраля 2012

Добавьте эту конфигурацию к вашей весенней конфигурации безопасности

<security:http...>
   ...
  <security:session-management invalid-session-url="/login"/>
</security:http>

Описание параметра invalid-session-url:

URL-адрес, на который будет перенаправлен пользователь, если он отправит неверный идентификатор сеанса. Обычно используется для определения времени ожидания сеанса.

Он должен направлять пользователя с недопустимым сеансом на страницу входа в систему.

...