0

我们有一个 Spring Web 应用程序,它已经使用 Spring 安全性来验证用户并授予对一组受限页面的访问权限。然而,我们还有另一组我们希望获得的资源。对于第二组,我们不需要用户身份验证,而是希望用户进入页面:/access.html 并输入访问代码(之前通过电子邮件发送给他们),然后他们将被授予访问这些资源的权限而无需登录。访问代码(令牌)仅在有限的时间段内有效,然后过期。

我可以以某种方式使用 spring security 来实现这个与我们已经存在的用户身份验证设置并行吗?

4

2 回答 2

1

当然,有几种方法可以做到这一点。听起来您需要做的就是创建一个过滤器,该过滤器可以在会话/请求中检查您的令牌,并创建/更新 Spring Security 上下文以获得所需的角色。然后授权正常进行。

特别是,您将为Spring Security Context添加GrantedAuthories到您的Authentication对象。这个过程有很多细节,我承认我的答案并不完整,但完整的答案会非常广泛。

于 2013-02-26T03:51:32.567 回答
0

我用 cookie 做过类似的事情。

您可以实现自己的过滤器扩展GenericFilterBean

然后使用 spring-security 设置配置,如下所示

<security:http ... >
    ....
    <sec:custom-filter position="FORM_LOGIN_FILTER" ref="cookieAuthenticationFilter" />                                         
</security:http>  

看看源代码BasicAuthenticationFilter可能会有所帮助。

于 2013-02-26T08:29:56.510 回答