Spring Security:使用特殊的URL参数忽略登录页面

我目前有一个看起来像这样的设置:

弹簧security.xml文件:

             

web.xml中:

  springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*  

这一切似乎都按预期工作,但是,在特殊情况下,如果用户传入特殊令牌,我希望绕过登录页面。 所以目前,如果用户访问诸如/dog类的URL,他们将看到登录页面,如果他们传递了foo/bar的凭据,那么他们将登录并查看与/dog对应的页面。

我希望能够使用诸如/dog?token=abcd类的URL,它将绕过登录屏幕并将它们直接带到与/dog对应的页面。 如果他们提供无效令牌,那么他们只会看到拒绝访问的页面。

在Spring Security中,您要介绍的方案在参考手册“ 预身份validation方案”一章中进行了介绍 。

基本上你必须:

  • 通过扩展AbstractPreAuthenticatedProcessingFilter或选择其中一个实现来创建自定义filter,
  • 注册自定义filter
  • 实现或选择一个已实现的AuthenticationUserDetailsService
  • PreAuthenticatedAuthenticationProvider注册服务(使用 )。

编辑 :在这个答案中 OP显示了他实现自定义PRE_AUTH_FILTER