春天的社会和安全专家,
我有以下用例:
我想知道如何使用Spring Social做到这一点。非常感谢!!
答案 0 :(得分:0)
你真的试过它看它是否有效吗? Spring安全性会自动执行此操作。
如果您是匿名用户并尝试访问需要特定权限的资源,则spring安全性会存储尝试的URL并将您重定向到登录页面。成功登录后,它会重新获取尝试的URL并将其重定向到那里。
答案 1 :(得分:0)
我只是设法通过复制/粘贴代码执行此操作,弹簧安全性用于执行此任务。
CAVEAT:我正在使用ProviderSignInController来配置帐户并登录。
ProviderSignInController允许使用SignInAdapter根据SocialConnection手动登录本地用户帐户
在signIn方法中:
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