2010-05-05 4 views
5

Я использую весеннюю безопасность 3.0.2. Все страницы приложений защищены, , поэтому вы должны пройти аутентификацию, чтобы увидеть их.сеанс потерян после успешного входа в систему?

Я использую протокол https.

У меня странная проблема: после успешного входа в систему и перехода на запрашиваемую страницу, когда я попытался открыть любую ссылку на другие страницы приложения, сеанс недействителен или потерян, и пользователь становится анонимным и перенаправляется на страницу входа в систему , Я получил это от отладки:

No HttpSession currently exists 
No SecurityContext was available from the HttpSession: null. A new one will be created. 

После рассмотрения кода много раз, ничего в коде не недействительность сеанса. Есть идеи? Почему может произойти что-то подобное?

ответ

1

приложение-безопасности, XML:

<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"> 

    <global-method-security pre-post-annotations="enabled"> 

    </global-method-security> 
    <http use-expressions="true" disable-url-rewriting="true"> 
     <remember-me token-repository-ref="tokenRepository" 
     token-validity-seconds="1209600"/> 
     <access-denied-handler error-page="/error.jsp"/> 

     <intercept-url pattern="/" access="permitAll" /> 
     <intercept-url pattern="/**/images/**" filters="none" /> 
     <intercept-url pattern="/**/files/**" filters="none" /> 
     <intercept-url pattern="/images/**" filters="none" /> 
     <intercept-url pattern="/scripts/**" filters="none" /> 
     <intercept-url pattern="/styles/**" filters="none" /> 
     <intercept-url pattern="/p/login" filters="none" /> 
     <intercept-url pattern="/p/register" filters="none" /> 
     <intercept-url pattern="/p/forgotPassword" filters="none" /> 
     <intercept-url pattern="/p/changePassword" filters="none" /> 
     <intercept-url pattern="/p/**" access="isAuthenticated()" /> 
     <custom-filter position="LAST" ref="rememberMeFilter"/>  
     <form-login     
      login-processing-url="/j_spring_security_check"   
      login-page="/p/login" 
      authentication-failure-url="/p/login?login_error=1"  
      authentication-success-handler-ref="myAuthenticationHandler"    
     /> 

     <logout /> 
    </http> 

    <beans:bean id="myAuthenticationHandler" class="com.myAuthenticationHandler" /> 
    <beans:bean id="rememberMeFilter" class="com.rememberMeFilter" /> 

    <beans:bean id="tokenRepository" class="org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl"> 
    <beans:property name="dataSource" ref="dataSource"/> 
    </beans:bean> 


    <authentication-manager alias="authenticationManager"> 
    <authentication-provider> 

      <password-encoder hash="md5"/>   
      <jdbc-user-service data-source-ref="dataSource" 
      users-by-username-query="SELECT u.username,u.password,u.enabled 
           FROM Users u where u.username=lower(?)"  
     authorities-by-username-query="SELECT a.username,a.authority  
           FROM Users u, authorities a 
           WHERE u.username=a.username 
           and u.username=lower(?) and enabled=1"/> 

     </authentication-provider> 
    </authentication-manager> 

    </beans:beans> 
+0

Хотя ответы всегда приветствуются, это действительно помогает предоставить некоторую информацию о том, как ваш код решает проблему. Просьба указать какой-то контекст, связанный с вашим ответом, и посмотреть [справочную статью] (http://stackoverflow.com/help/how-to-answer) для получения информации о том, как писать отличные ответы. –

+0

Я также сталкиваюсь с аналогичной проблемой, как вы решили? –

2

Может быть проблема домена печенье или путь печенья. Вы страница входа в систему https в том же пути/домене?

+2

Благодарим вас за этот ответ. Я пытаюсь войти в систему после перехода от Glassfish к WildFly. Каждый раз, когда я успешно вошел в систему с использованием весенней безопасности, сеанс был утерян, а также анонимный пользователь, вызвавший перезагрузку страницы входа в систему. Я очистил все файлы cookie с локальным браузером и смог войти в систему! –

+0

@ChrisRitchie Спасибо за ваш комментарий. У меня была такая же проблема, и очистка файлов cookie браузера исправила эту проблему для меня. –

2

У меня была та же проблема. Я перехожу из Jboss 7.0 в Wildfly 8.0, в Jboss 7.0 поведение было в порядке (успех входа в систему и перенаправление на индексную страницу), но в Wilfly логин был успешным, перенаправление на индексную страницу, но позже сеанс был потерян, а Spring Security перенаправлена ​​на логин снова.

Я видел файлы cookie в веб-навигаторе (хром) и там два файла cookie JSESSIONID в том же домене (127.0.0.1) с разными значениями. Я удалил все файлы cookie и снова выполнил процедуру регистрации, и все было в порядке.

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