我在5个月前在两个不同的帖子中提出了这个问题,但遗憾的是没有收到任何答复。有人向我建议这些帖子太长了(太详细了),所以我会尝试把它归结为必需品。
据我所知,在Spring Security下,所有用户都要接受过期会话的安全配置,无论他们是匿名用户还是经过身份验证的用户(登录或记住我)。 IMO,匿名用户应该被允许在他们想要的时间内查看公共页面(.antMatchers.permitAll()
),但如果他们在单个页面上停留超过会话到期限制,他们将得到一个过期的会话错误,如同登录用户。
防止匿名用户出现此会话错误的最佳方法是什么?最简单的方法是从公共页面中删除安全性(web.ignoring().antMatchers
...),但许多SO帖子似乎表明这是不可取的。除此之外,您的选项似乎包括选择一个点来插入自定义过滤器,扩展现有过滤器,例如SessionManagementFilter
,或者扩展其中一个重定向策略,例如DefaultRedirectStrategy
或SimpleRedirectInvalidSessionStrategy
。
我不得不相信这是一种常见情况 - 几乎所有网站都有公共页面 - 所以我很好奇最常见或最佳实践方法是解决它。