2013-05-21 2 views
0

С помощью средства безопасности Spring, когда я оставляю веб-приложение в течение некоторого времени, аутентификация теряется, и пользователь должен снова войти в систему, поэтому, когда я нажимаю кнопку или ссылку в своем приложении, чтобы завершить свою работу это исключение появляется:Исключено из-за ошибки с обработкой сеанса

Etat HTTP 500 - javax.servlet.ServletException: javax.servlet.jsp.JspException: org.springframework.beans.NotReadablePropertyException: Invalid property 'principal.username' of bean class [org.springframework.security.authentication.AnonymousAuthenticationToken]: Bean property 'principal.username' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 

, поэтому я хочу, чтобы скрыть это и показать довольно страница говорит о том, что пользователь должен войти в системе, так как пользователь не может понять сообщение о коте, и он может быть страшен тем, что !! Какие-либо предложения ?

/* EDIT */

<?xml version="1.0" encoding="UTF-8"?> 
    <beans:beans xmlns="http://www.springframework.org/schema/security" 
     xmlns:beans="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.0.xsd"> 

     <http auto-config="true"> 
      <intercept-url pattern="/" access="ROLE_ADMIN,ROLE_USER" /> 
      <intercept-url pattern="/index*" access="ROLE_ADMIN,ROLE_USER" /> 
      <intercept-url pattern="/mise_a_jour*" access="ROLE_ADMIN,ROLE_USER" /> 
      <intercept-url pattern="/recherche*" access="ROLE_ADMIN,ROLE_USER" /> 
      <intercept-url pattern="/pages/*" filters="none" /> 
      <intercept-url pattern="/css/*" filters="none" /> 
      <intercept-url pattern="/js/*" filters="none" /> 
      <intercept-url pattern="/images/*" filters="none" /> 
      <form-login login-page="/login" authentication-failure-url="/failLogin" /> 
      <logout logout-success-url="/logoff" /> 
      <access-denied-handler error-page="/403" /> 

     </http> 



    <beans:bean id="concurrencyFilter" 
      class="org.springframework.security.web.session.ConcurrentSessionFilter"> 
     <beans:property name="sessionRegistry" ref="sessionRegistry" /> 
     <beans:property name="expiredUrl" value="/session-expired" /> 
     </beans:bean> 

     <authentication-manager> 
      <authentication-provider> 
       <password-encoder hash="sha" /> 
       <jdbc-user-service data-source-ref="dataSource" 
        users-by-username-query="select login,password, enable from utilisateurs where login=?" 
        authorities-by-username-query="select u.login, r.role from utilisateurs u, roles r where u.id = r.id and u.login =? " /> 
      </authentication-provider> 
     </authentication-manager> 


    </beans:beans> 

трассировки стека:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'sessionRegistry' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322) 
    ... 25 more 
+0

Это не похоже на проблему, связанную с проверкой подлинности. Я имею в виду, что Spring выбрасывает «AccessDeniedException», если пользователь не аутентифицирован. –

ответ

0

Существует конфиг называется истекли-URL, который вы можете установить, что-то вроде этого

<beans:bean id="concurrencyFilter" 
     class="org.springframework.security.web.session.ConcurrentSessionFilter"> 
    <beans:property name="sessionRegistry" ref="sessionRegistry" /> 
    <beans:property **name="expiredUrl" value="/session-expired.htm"** /> 
    </beans:bean> 

Дополнительная информация здесь http://static.springsource.org/spring-security/site/docs/3.0.x/reference/session-mgmt.html.

+0

Должен ли я написать это в новом файле XML? – Somar

+0

Должно ли быть в контексте безопасности xml –

+0

следует ли добавить что-то еще, например класс или контроллер, ожидать конфигурации xml? Я применил приведенные выше строки, но генерирует ошибку. – Somar

Смежные вопросы