2

春季社保专家,

我有以下用例:

  1. 用户请求一个特定的 URL,例如http://www.foobar.com/foo/1001
  2. 匿名用户可以看到这个页面,但不能在这个页面上发表评论。评论发布部分由 Spring 安全保护。
  3. 用户点击登录。它会弹出一个登录窗口或将其重定向到登录页面。
  4. 用户选择使用 Facebook ID 登录。
  5. 用户使用 FB 登录后,它会将用户重定向到http://www.foobar.com/foo/1001并获得授权。

我想知道如何使用 Spring Social 做到这一点。非常感谢!!

4

2 回答 2

0

您是否真的尝试过它是否有效?Spring security 会自动执行此操作。

如果您是匿名用户并尝试访问需要特定权限的资源,spring security 将存储尝试的 URL 并将您重定向到登录页面。成功登录后,它会取回尝试的 URL 并将您重定向到那里。

于 2013-08-29T15:26:06.440 回答
0

我只能通过复制/粘贴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

于 2015-01-12T11:30:08.203 回答