我有一个安全配置为的公共页面
<intercept-url pattern="/public/a.jsf" access="permitAll"/>
但是,该页面也有一些仅向经过身份验证的用户显示的安全内容。要查看安全内容,用户必须单击该页面上的登录链接,该链接会将他们重定向到 CAS 登录页面,并在成功验证后将他们带回同一页面。这是登录链接
<a href="cas_server/login?service=app_server/public/a.jsf">Login</a>
一切正常,包括成功的身份验证和重定向回公共页面。但是,当用户返回公共页面时,Spring SecurityContextHolder 不会被填充,而是仍将用户显示为匿名用户。另一方面,如果上面的服务 url 是非公共页面,例如/private/b.jsf,然后用户从b.jsf导航回 a.jsf,则 securitycontextholder 具有身份验证对象,用户可以看到安全b.jsf上的内容
有什么方法可以在登录后实现重定向到公共页面,而不必通过b.jsf并且仍然填充 securitycontextholder?
注意:在a.jsf页面上,安全内容是基于 bean 方法呈现的,该方法#{bean.authenticated}
检查 securitycontextholder 并查看是否存在除 Anonymous 之外的任何身份验证对象