我对 Spring security 和 Spring social 比较陌生。我正在尝试使用标准 Spring Security 或 Spring social Facebook 实现混合身份验证。
因此,用户可以进行身份验证:
- 使用标准 Spring 安全登录表单,如下所示:
我的 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
受以下拦截 URL 保护:
<intercept-url pattern="/memberArea/**" access="hasRole('ROLE_USER')" />
用户被重定向到登录表单,成功登录后,用户最终被重定向到受保护的资源,即www.example.com/memberArea/editMyProfile
- 或者用户可以选择 Spring Social Facebook 并使用如下链接进行身份验证/登录:
我的 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 security 和 Spring Social Facebook——以某种方式检索请求的 URL(此处www.example.com/memberArea/editMyProfile
)并最终将用户重定向到该 URL?