我们有一个Spring Web应用程序,它已经使用Spring安全性来验证用户身份并授予对一组受限页面的访问权限。但是,我们希望获得另一组资源。对于第二组,我们不希望用户身份验证,而是希望用户访问页面:/access.html并输入访问代码(之前通过电子邮件发送给他们),然后他们将被授予访问这些资源的权限,而无需登录。访问代码(令牌)仅在有限的时间段内有效,然后到期。
我能否以某种方式使用spring security来实现与我们已有的用户身份验证设置并行实现?
答案 0 :(得分:1)
当然,有几种方法可以做到这一点。听起来您需要做的就是创建一个过滤器,可以在会话/请求中检查您的令牌,并创建/更新Spring Security上下文以获得所需的角色。然后授权继续进行。
特别是,您要为GrantedAuthories Authentication对象添加Spring Security Context。这个过程有很多细节,我承认我的答案并不完整,但完整答案会非常广泛。
答案 1 :(得分:0)
我用cookie完成了类似的事情。
您可以实现自己的扩展程序GenericFilterBean
然后使用spring-security设置配置,如下所示
<security:http ... >
....
<sec:custom-filter position="FORM_LOGIN_FILTER" ref="cookieAuthenticationFilter" />
</security:http>
查看BasicAuthenticationFilter
的源代码可能会有所帮助。