我对Spring安全和Spring社交相对较新。我正在尝试使用标准的Spring Security或Spring社交Facebook实现混合身份验证。
因此,用户可以进行身份验证:
我的Thymeleaf模板的片段:
<form name="f" th:action="@{/resources/j_spring_security_check}" method="POST">
<input id="j_username" type='text' name='j_username'/><br />
<input id="j_password" type='password' name='j_password'/><br />
<input id="proceed" type="submit" value="login" />
</form>
这样可行,即使用户向受保护资源发送请求,例如www.example.com/memberArea/editMyProfile
受以下intercept-url保护:
<intercept-url pattern="/memberArea/**" access="hasRole('ROLE_USER')" />
用户被重定向到登录表单,并且在成功登录后,用户最终被重定向到受保护资源,即www.example.com/memberArea/editMyProfile
我的Thymeleaf模板的片段:
<a th:href="@{'https://www.facebook.com/dialog/oauth/?client_id=414113641982512&redirect_uri=http://www.example.com/&state=UNIQUE&scope=read_stream'}">Login with facebook</a>
在这种情况下,用户当然会被重定向到www.example.com
而不是www.example.com/memberArea/editMyProfile
我的问题是,如何 - 仍然使用Spring安全和Spring社交Facebook - 我能以某种方式检索请求的URL(这里是www.example.com/memberArea/editMyProfile
)并最终将用户重定向到此URL吗?
答案 0 :(得分:2)
您能帮助我了解您尝试做的事情与Spring Social的ProviderSignInController的工作方式有何不同?具体来说,如果你看一下Spring Social Showcase(https://github.com/SpringSource/spring-social-samples/tree/master/spring-social-showcase)或Spring Social Quickstart(https://github.com) / SpringSource / spring-social-samples / tree / master / spring-social-quickstart)示例,它们都使用ProviderSignInController通过Facebook验证用户。
在展示示例中,通过将用户的FB信息与先前建立的连接进行比较来完成身份验证。在快速启动示例中,它通过“隐式身份验证”完成,其中没有特定于应用程序的身份验证,而Facebook授权充分用于应用程序身份验证。根据我的理解,你试图做与展示相同的风格,但我可能会误解你正在尝试做什么。
顺便说一句,请随时在StackOverflow继续讨论,但我鼓励您在Spring社交论坛(http://forum.springsource.org/forumdisplay.php?82-Social)上提问您的Spring社交问题,因为我几乎每天监视该论坛,但每周只访问SO(如果经常这样)。