我正在使用 Spring Security 和 Thymeleaf 构建 Spring Boot Web 应用程序。将有几个动态页面(稍后我将使用 JavaScript 来做),每个页面都必须显示一个登录表单和一个注册按钮(如果用户未经过身份验证),或者一个欢迎按钮和一个注销按钮(如果经过验证)。总的来说,一切都和普通网站一样。那么,如何使用 Spring Security 和/或 Thymeleaf 来检查用户是否已通过身份验证,从而不必将检查条件塞入每个控制器方法或每个 html 视图中?制作某种安全过滤器?如果是这样,怎么办?
只是按照你想要的方式,它可能行不通。假设有关用户是否登录的信息仅显示在标题中。无论如何,Spring 在显示任何视图之前都需要检查用户身份验证。因此,您必须为每种情况创建一个标头。使用 Thymeleaf Spring Security Dialect,它看起来像这样:
您可以将这段内容插入到您的每个页面上。或者将其移至单独的位置(例如,移至 String标头变量或任何对您来说更方便的位置)。只需在每个页面上传递此标题(据我所知,标题在任何地方都是相同的)。也就是说,在每个页面上,您只会拥有header变量的值,而没有任何 if-else,但在幕后,加载每个页面时,Spring 将检查身份验证。只要确保包含方言即可。添加到您的属性文件: