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
。