1

我正在开发一个使用 Spring Security 2.0.4 的遗留应用程序。我创建了一个自定义 AbstractPreAuthenticatedProcessingFilter 和 PreAuthenticatedAuthenticationProvider。他们根据来自客户登录服务器的请求中作为参数发送的电子邮件地址来创建和验证用户。(我知道不是很安全,但这就是要求)

这一切都很好,但我的问题是,一旦用户通过身份验证,我需要创建一个自定义 cookie,这样他们就可以在当前会话之外访问应用程序,而不必被登录服务器重定向。

我无法访问 AbstractPreAuthenticatedProcessingFilter 或 PreAuthenticatedAuthenticationProvider 中的 HttpServletRepsonse 对象,因此我不能只在响应中设置 cookie。我可以将 RememberMeServices 实现到 AbstractPreAuthenticatedProcessingFilter 类中,但我不确定这是否是正确的方法。

谁能指出我正确的方向?我是否需要创建自定义记住我功能?一旦用户通过身份验证,我要做的就是设置一个 cookie(如果不存在的话)。然后对于未来的请求,我可以验证 AbstractPreAuthenticatedProcessingFilter 中的 cookie 并返回经过身份验证的主体。

4

1 回答 1

1

在没有创建任何新过滤器或弄乱记住我的情况下进行了修复(这实际上与预身份验证没有太大关系)

我只是覆盖了: AbstractPreAuthenticatedProcessingFilter#successfulAuthentication 这使我可以访问 HttpServletRepsonse 并且它仅在成功的身份验证时触发。

于 2011-10-17T22:13:54.250 回答