2012-07-08 4 views
0

My Spring Security XML выглядит следующим образом:запомнить меня результат игнорируется яровой безопасности, и я по-прежнему перенаправлены на страницу входа в систему

<http use-expressions="true"> 
     <intercept-url pattern="/login" access="isAnonymous()" requires-channel="https"/> 
     <intercept-url pattern="/login/" access="isAnonymous()" requires-channel="https" /> 
     <intercept-url pattern="/logout-success" access="isAnonymous()" /> 
     <intercept-url pattern="/logout-success/" access="isAnonymous()" />  
     <intercept-url pattern="/logout" access="isAuthenticated()" /> 

     <intercept-url pattern="/**" access="hasRole('ROLE_SUPER_ADMIN')" /> 
     <form-login login-page="/login/" default-target-url="/example/Login_execute"/> 
     <logout logout-url="/logout" logout-success-url="/logout-success" /> 
     <remember-me services-ref="rememberMeServices"/> 

     <port-mappings> 
      <port-mapping http="8080" https="8443"/> 
     </port-mappings>   
    </http> 

... 

    <beans:bean id="userDetailsService" class="com.myownpackage.UserAccountServiceImpl"/> 

    <beans:bean id="rememberMeServices" class="org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices"> 
     <beans:property name="userDetailsService" ref="userDetailsService" /> 
     <beans:property name="tokenRepository" ref="persistentTokenRepository" /> 
     <beans:property name="key" value="myownkey" /> 
    </beans:bean> 

<beans:bean id="persistentTokenRepository" class="com.myownpackage.PersistentTokenRepositoryImpl" /> 

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

Если я закрываю браузер, повторно открыть браузер и открыть страницу, которая требует проверки подлинности, моя программа будет выполнять processAutoLoginCookie на PersistentTokenBasedRememberMeServices и возвращающиеся правильные UserDetails (это тоже правильно)

НО, несмотря на это, я я все еще перенаправлен на страницу входа.

Кстати, страница входа настраивается, и я просто показываю JSP-файл с формой для входа.

Есть ли какой-нибудь шаг, который я пропустил при написании весенней безопасности XML?

+0

Проверьте вывод журнала отладки. Когда вы перенаправлены, он должен сказать вам, почему. Возможно, пользователь не имеет роли «ROLE_SUPER_ADMIN», например, поэтому не может получить доступ к другому URL-адресу. –

ответ

1

«Запомнить меня» в Spring Security использует Cookie на стороне клиента, который является вашим браузером.

От Spring's DOCS:

Запомни меня или аутентификации настойчивый-Логин относится к веб-сайтам в состоянии вспомнить личность доверителя между сеансами. Обычно это делается путем отправки cookie в браузер, с обнаружением файла cookie во время будущих сеансов и выводом автоматического входа в систему. Spring Security обеспечивает необходимые крюки для выполнения этих операций и имеет две бетонные версии . Один использует хеширование для сохранения безопасности маркеров на основе файлов cookie, а другой использует базу данных или другой механизм хранения постоянной памяти для хранения сгенерированных токенов.

идея Spring является то, что вы сможете автоматически войти между различными Sessions:

сессий сервера, то есть, когда сервер «отскакивает» (идет вниз, а затем вверх), обрабатываются, например, , по стойкости.

Клиенты Сессия обрабатывается браузером (Cookies). В браузере используется Cookie, который отправляет Spring, сервер проверяет это Cookie и позволяет пользователю автоматически войти в систему без необходимости вводить учетные данные снова.

Проверьте Cookies в своем браузере.

HTH.

Ohad.