我已經花了一天的時間,但不明白爲什麼remember_me
在SPring安全不起作用。我只使用XML作爲沒有Java代碼配置:春季安全記得我不工作
<http use-expressions="false" auto-config="true">
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/**" access="ROLE_USER" />
<form-login login-page="/BL/index.html" default-target-url="/BL/main.html"
authentication-failure-url="/BL/index.html?autherror=true"
always-use-default-target='true' />
<logout logout-url="/logout" logout-success-url="/BL/index.html"
invalidate-session="true" />
<remember-me data-source-ref="dataSource"
user-service-ref="jdbcUserService" key="99999989"
token-validity-seconds="86400" />
<access-denied-handler error-page="/BL/index.html?autherror=true" />
</http>
總之index.html
是我的登錄頁面。當我登錄時,我看到名爲SPRING_SECURITY_REMEMBER_ME_COOKIE
的值創建的cookie的值爲V2FrblE1Vlk3cFd6ZDIvZnRjdnlIZz09OndOb2h2NmUvdFlZRHJvRFRPV3lheHc9PQ
。
但是,如果我現在回到index.html
頁面,它會要求我再次登錄。我仍然看到相同的cookie值。上述xml配置中的錯誤是什麼?我希望它不應該要求我再次登錄,但應該重定向到我的主頁,因爲我已經登錄。
我看到下面的日誌服務器上。看起來像一個請求被與用戶作爲空字符串發送:
14:16:34031 DEBUG JdbcUserDetailsManager:155 - 查詢返回任何 結果爲用戶 '' 14:16:34031 DEBUG DaoAuthenticationProvider還可以爲:131 - 用戶'' 未找到14:16:34031 DEBUG UsernamePasswordAuthenticationFilter:318 - 身份驗證請求 失敗: org.springframework.security.authentication.BadCredentialsException: 認證錯誤14:16:34032 DEBUG UsernamePasswordAuthenticationFilter:319 - 更新 SecurityContextHolder中包含null身份驗證14:16:34,032 DE BUG UsernamePasswordAuthenticationFilter:320 - 委派到 認證失敗 handlerorg.springframework.se[email protected]6011c7cf 14:16:34032 DEBUG對PersistentTokenBasedRememberMeServices:214 - 交互式登錄嘗試是不成功的。 14:16:34032 DEBUG 對PersistentTokenBasedRememberMeServices:300 - 取消餅乾 14:16:34032 DEBUG SimpleUrlAuthenticationFailureHandler:67 - 重定向到/BL/index.html?autherror=true
你使用哪種版本的spring security?當用戶使用該用戶名和密碼登錄時, – Ralph
是存儲在數據庫中的令牌嗎? – Ralph
@Ralph Spring-Security 3.0.4 – Jatin