如果在服务层(任何地方)找到SecurityContextHolder
的主体,则如何将用户重定向到登录页面?
我想它应该是一些拦截器或过滤器。
答案 0 :(得分:1)
当请求进入服务层时,安全上下文应该已经由安全过滤器链中的一个已配置过滤器填充。如果未填充,则表示安全过滤器链未正确配置,或者请求URL未受任何已配置的过滤器链保护。检查安全配置中pattern
元素上是否存在http
属性,以及它是否与请求网址匹配。
负责处理未经身份验证的请求的过滤器是ExceptionTranslationFilter
,它将调用已配置的AuthenticationEntryPoint
来启动身份验证过程。
默认命名空间配置(<security:http auto-config="true"...
)使用LoginUrlAuthenticationEntryPoint
设置此过滤器,将用户重定向到登录页面。