2014-03-03 32 views
-1

中找不到驗證對象我正在使用Spring 2.5.2和同一版本的spring安全性。 問題是,我通過應用程序登錄,並清除我的瀏覽器的cookies並刷新頁面應用程序被重定向到登錄頁面,但在後面,它拋出以下異常在SecurityContext(Spring 2.5.2)

DEBUG的ExceptionTranslationFilter - 驗證異常發生;重定向到認證入口點 org.springframework.security.AuthenticationCredentialsNotFoundException:認證對象完全沒有org.springframework.security.intercept.AbstractSecurityInterceptor.credentialsNotFound(AbstractSecurityInterceptor.java:342) 在SecurityContext中 發現在org.springframework.security .intercept.AbstractSecurityInterceptor.beforeInvocation(AbstractSecurityInterceptor.java:254) at org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:106) at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:83) at org.springframework.security.util.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:390) 在org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:52) 在org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) 在org.springframework.security.util.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:390)

持續到at java.lang.Thread.run(Unknown Source)

後這個異常的應用程序輸入登錄憑據後重定向到&登錄頁面 我必須單擊兩次我的登錄按鈕進入應用程序。 第一次點擊控制檯後顯示

DEBUG CptLogger - com.capgent.cpt.server.services.auth.LoginAuthenticationProvider調用的方法:additionalAuthenticationChecks isAuthenticated? :false DEBUG XmlWebApplicationContext - 在上下文中發佈事件[o[email protected]1d0d124]:org.springframework.security.event.authentication.AuthenticationSuccessEvent [source = org.springframework.security.providers.UsernamePasswordAuthenticationToken @ 862413dc:負責人:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN] DEBUG AuthenticationProcessingFilter - 認證成功:org.springframework.security.providers.UsernamePassw[email protected]:Principal:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予的權限:ROLE_ADMIN DEBUG AuthenticationProcessingFilter - 更新了SecurityContextHolder以包含以下身份驗證:'org.springf[email protected]862413dc:Principal:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN' DEBUG SessionUtils - 使Id'6693D3BCE880D6339D9D149F44637952'失效並遷移屬性。 DEBUG SessionUtils - 開始新的會話:E772A0D1441C079B2ACD3698F68AF63C DEBUG AuthenticationProcessingFilter - 重定向從HTTP會話(或默認)目標網址:http://localhost:8090/resources/com.capgent.cpt.Main/Main.jsp DEBUG omTokenBasedRemembermeServices - 沒有送記得,我的cookie(本金沒有設置參數 '_spring_security_remember_me') DEBUG omTokenBasedRemembermeServices - 記住我登錄沒有要求。 DEBUG XmlWebApplicationContext - 在上下文中發佈事件[o[email protected]1d0d124]:org.springframework.security.event.authentication.InteractiveAuthenticationSuccessEvent [source = org.springf[email protected]862413dc: Principal:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN] DEBUG essionContextIntegrationFilter - SecurityContext存儲到HttpSession:'[email protected]c:身份驗證:org.springf[email protected]862413dc:主體:com.capgent.cpt.server .services.auth.UserDetailsContainer @ bc1ebd;密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予的權限:ROLE_ADMIN」 DEBUG essionContextIntegrationFilter - SecurityContextHolder中現在清零,作爲請求處理完成 DEBUG RequestContextFilter兩個 - 清除線程綁定請求上下文:[email protected] DEBUG nsactionSynchronizationManager - 刪除值[org.springframework。 [email protected]用於鍵[[email protected]]從螺紋[HTTP-8090-Processor25] DEBUG的OpenSessionInViewFilter - 在的OpenSessionInViewFilter SessionFactoryUtils中DEBUG關閉單Hibernate會話 - 關閉Hibernate會話 DEBUG的ConnectionManager - 釋放JDBC連接[(打開PreparedStatements:0,全局:0)(打開ResultSets:0,全局:0)] DEBUG ConnectionManager - 事務在on_close連接釋放模式下完成;一定要關閉會話以釋放JDBC資源! : DEBUG的OpenSessionInViewFilter - 使用SessionFactory的 'cptSessionFactory' 爲的OpenSessionInViewFilter DEBUG DefaultListableBeanFactory - 返回單豆 'cptSessionFactory' DEBUG的OpenSessionInViewFilter的緩存實例 - 在的OpenSessionInViewFilter DEBUG SessionFactoryUtils中打開單個的Hibernate Session - 在時間戳打開的會話 - 打開Hibernate的Session DEBUG SessionImpl 13938439638 DEBUG nsactionSynchronizationManager - 關鍵[[email protected]]綁定值[[email protected]]與線程[http-8090-Processor25] DEBUG RequestContextFilter - 綁定的請求上下文thread:[email protected] DEBUG Filt erChainProxy - 將URL轉換爲小寫,從:'/com.capgent.cpt.main/main.jsp';到:'/com.capgent.cpt.main/main.jsp' DEBUG FilterChainProxy - Candidate is:'/com.capgent.cpt.main/main.jsp';模式是/ssoerror.html*; matched = false DEBUG FilterChainProxy - 將URL轉換爲小寫,從:'/com.capgent.cpt.main/main.jsp';到:'/com.capgent.cpt.main/main.jsp' DEBUG FilterChainProxy - Candidate is:'/com.capgent.cpt.main/main.jsp';模式是/ ; matched = true DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中的第10位;射擊過濾器:'org.springframework.security.context.HttpSessionContextIntegrationFilter [order = 200; ]' DEBUG essionContextIntegrationFilter - 從SPRING_SECURITY_CONTEXT獲得一個與SecurityContextHolder相關的有效SecurityContext:'[email protected]c:Authentication:org.springframework.security。用戶名[email protected]:主體:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中的第10位;發射過濾器:'com.capgent.cpt.server.services.auth.CantrexSsoProcessingFilter [order = 600; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中的第10位;點火過濾器:'com.capgent.cpt.server.services.auth.DnbiSsoProcessingFilter [order = 600; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中的第10位;發射過濾器:'com.capgent.cpt.server.services.auth.OpenIdAuthenticationProcessingFilter [order = 800; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中第10位的第5位;發射過濾器:'org.springframework.security.ui.webapp.AuthenticationProcessingFilter [order = 700; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中的第10位;射擊過濾器:'org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter [order = 1100; ]' DEBUG SavedRequest - pathInfo:均爲null(屬性等於) DEBUG SavedRequest - queryString:均爲null(屬性等於) DEBUG SavedRequest - requestURI:arg1 =/resources/com.capgent.cpt.Main/Main.jsp; arg2 =/resources/com.capgent.cpt.Main/Main.jsp(property equals) DEBUG SavedRequest - serverPort:arg1 = 8090; arg2 = 8090(property equals) DEBUG SavedRequest - requestURL:arg1 = http://localhost:8090/resources/com.capgent.cpt.Main/Main.jsp; arg2 = http://localhost:8090/resources/com.capgent.cpt.Main/Main.jsp(property equals) DEBUG SavedRequest - scheme:arg1 = http; arg2 = http(property equals) DEBUG SavedRequest - serverName:arg1 = localhost; arg2 = localhost(property equals) DEBUG SavedRequest - contextPath:arg1 =/resources; arg2 =/resources(property equals) DEBUG SavedRequest - servletPath:arg1 =/com.capgent.cpt.Main/Main.jsp; arg2 =/com.capgent.cpt.Main/Main.jsp(property equals) DEBUG SavedRequestAwareWrapper - 替換包裝器; SavedRequest是:SavedRequest [http:// localhost:8090/resources/com.capgent.cpt.Main/Main.jsp] DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp,位於第7位的第10位過濾鏈;射擊過濾器:'org.springframework.security.ui.rememberme.RememberMeProcessingFilter [order = 1200; ]' DEBUG RememberMeProcessingFilter - SecurityContextHolder沒有使用remember-me標記填充,因爲它已包含:'org.springf[email protected]862413dc:Principal:[email protected] ;密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中第10位的第8位;發射過濾器:'org.springframework.security.ui.ExceptionTranslationFilter [order = 1400; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於附加過濾器鏈中第10位的第9位;發射過濾器:'org.springframework.security.ui.SessionFixationProtectionFilter [order = 1600; ]' DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp位於10的另一個過濾器鏈中的第10位;點擊過濾器:'org.s[email protected]11ca33b' DEBUG lterInvocationDefinitionSource - 將URL轉換爲小寫,從:'/com.capgent.cpt.main/main.jsp'; to:'/com.capgent.cpt.main/main.jsp' DEBUG lterInvocationDefinitionSource - Candidate is:'/com.capgent.cpt.main/main.jsp';模式是/ /*main.jsp; matched = true DEBUG AbstractSecurityInterceptor - 安全對象:FilterInvocation:URL:/com.capgent.cpt.Main/Main.jsp; ConfigAttributes:[ROLE_ADMIN] DEBUG AbstractSecurityInterceptor - 先前已通過身份驗證:org.springframework。[email protected]:Principal:[email protected];密碼保護];已驗證:true;詳細信息:[email protected]:RemoteIpAddress:127.0.0.1; SessionId:6693D3BCE880D6339D9D149F44637952;授予權限:ROLE_ADMIN DEBUG AbstractSecurityInterceptor - 授權成功 DEBUG XmlWebApplicationContext - 在上下文中發佈事件[o[email protected]1d0d124]:org.springframework.security.event.authorization.AuthorizedEvent [source = FilterInvocation: URL:/com.capgent.cpt.Main/Main.jsp] DEBUG AbstractSecurityInterceptor - RunAsManager未更改身份驗證對象 DEBUG FilterChainProxy - /com.capgent.cpt.Main/Main.jsp到達其他過濾器鏈的末尾; /com.capgent.cpt.Main/Main.jsp DEBUG JspServlet - PATHINFO:JspEngine - - - > /com.capgent.cpt.Main/Main.jsp DEBUG JspServlet ServletPath與原始鏈 DEBUG JspServlet出發空 DEBUG JspServlet - RealPath:D:\ springworkspace.metadata.plugins \ org.eclipse.wst.server.core \ tmp3 \ wtpwebapps \ capgentspring \ com.capgent.cpt.Main \ Main.jsp DEBUG JspServlet - RequestURI:/ resources/com.capgent.cpt.Main/main.jsp中 DEBUG JspServlet - 查詢字符串:空

+1

請問你的「春季安全」配置XML是什麼樣子? – Jay

回答

0

設置
<form-login login-page="/Login.jsp" authentication-failure-url="/LoginHandler.jsp" always-use-default-target="true" default-target-url="/LoginHandler.jsp"/>

已經解決了我的問題越早值alway-use-default-target="false"

1

「問題是,我通過應用程序登錄,並清除我的瀏覽器cookie,並刷新頁面AP折磨重定向到登錄頁面「

是的。這是正常行爲。由於舊會話無效/關閉,因此將從那裏開始新會話。

「但在後面,它拋出以下異常」

Yes.It會,因爲它試圖在刷新您已清除了餅乾page.Since重新驗證用戶信息/會話,它將失敗。

+1

謝謝你幫我解決問題。由於聲譽低下,我無法投票。 – zuber28

+0

沒問題!涼..!! –

相關問題