我只能設法通過複製/粘貼代碼來完成這項工作。
警告:我使用的ProviderSignInController來提供賬戶和登錄
ProviderSignInController允許使用SignInAdapter的手動登錄本地用戶帳戶基礎上,SocialConnection
在簽到方法:
public String signIn(String userId, Connection<?> connection, NativeWebRequest request)
我有以下代碼:
HttpServletRequest req = (HttpServletRequest)request.getNativeRequest();
HttpServletResponse resp = (HttpServletResponse)request.getNativeResponse();
RequestCache rc = new HttpSessionRequestCache();
SavedRequest savedRequest = rc.getRequest(req, resp);
String targetUrl = savedRequest.getRedirectUrl();
if(targetUrl != null){
log.info("Redirecting to DefaultSavedRequest Url: " + targetUrl);
new DefaultRedirectStrategy().sendRedirect(req, resp, targetUrl);
hasSentRedirect = true;
}
我不得不通過SavedRequestAwareAuthenticationSuccessHandler的代碼來了解它是如何作爲彈簧安全的一部分工作的。
我很失望ProviderSignInController與Spring Security沒有真正聯繫。所以我們必須破解我們的方式來獲得相同的功能。 我也發現登錄事件也不會發布。
我最近問這個問題:Should I use both SocialAuthenticationFilter and ProviderSignInController together
我不知道使用Spring社會,但你必須存儲在'HttpSession'提出的最後一個請求。邏輯完成後,您將發送一個重定向到前一個請求的路徑。 –
這是一個我會嘗試的方法,如果我不使用Spring Security和Spring Social。 Spring安全性自動執行重定向。對於Spring Social,有一個登錄控制器,但我不知道它是如何工作的。我想它只支持一級重定向,這意味着您成功登錄社交賬戶後重定向到登錄頁面。 –