сеанс потерян после успешного входа в систему? - PullRequest
6 голосов
/ 06 мая 2010

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 11 мая 2010

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

2 голосов
/ 25 сентября 2014

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

Я видел куки в веб-навигаторе (chrome), и там два куки JSESSIONID в одном домене (127.0.0.1) с разными значениями. Я удалил все куки и снова выполнил процедуру регистрации, и это было нормально.

1 голос
/ 06 мая 2010

приложение-безопасности, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...