spring - 带有 Spring Security 的 Thymeleaf - 如何检查用户是否已登录?

标签 spring spring-mvc spring-security thymeleaf

我正在使用带有 Thymeleaf 和 Spring Security 的 Spring Boot。 我有一个带有登录链接的简单 View 。当用户登录时,我想将登录链接更改为注销链接。

我试过了:

<div sec:authorize="#{isAuthenticated()}">
  <a th:href="@{/logout}">Log out</a>
</div>
<div sec:authorize="#{isAnonymous()}">
  <a th:href="@{/login}">Log in</a>
</div>

但它不起作用 - 它显示两个链接。

编辑: 我解决了它。我必须注册 Thymeleaf 方言。为了做到这一点,我创建了一个新的配置类,它创建了 SpringSecurityDialect bean:

@Configuration
public class ThymeleafConfig {

    @Bean
    public SpringSecurityDialect springSecurityDialect(){
        return new SpringSecurityDialect();
    }
}

最佳答案

根据thymeleaf docs不需要拼写表达式。这不是 th: 属性。

所以你可以试试:

<div sec:authorize="isAuthenticated()">

<div sec:authorize="isAnonymous()">

关于spring - 带有 Spring Security 的 Thymeleaf - 如何检查用户是否已登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904176/

相关文章:

java - Spring尝试绑定(bind)所有字段

spring - spring mvc中的转换数据类型

java - Spring:自动创建年月属性值?

java - Spring Data 更新多对一属性

java - 无 XML 的 Spring 3.1 未找到 HTTP 请求的映射

java - 如何在 Spring Boot 中设置 ActiveMQ 端口?

ajax - 第二次在ajax响应中获取不同的数据

java - token 端点 : Handling Null Pointer Exception

Spring Security 自定义身份验证并记住我

java - 使用@PreAuthorize时的安全配置