我只能通过复制/粘贴spring security用来完成这项工作的代码来做到这一点。
警告:我正在使用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的代码,以了解它是如何作为 Spring 安全性的一部分工作的。
我很失望 ProviderSignInController 根本没有真正链接到 Spring Security。所以我们必须破解我们的方式来获得相同的功能。我还发现登录事件也没有发布。
我最近问过这个问题:我应该同时使用 SocialAuthenticationFilter 和 ProviderSignInController