sec:authentication 在 Spring Boot Security 中不起作用

Posted

技术标签:

【中文标题】sec:authentication 在 Spring Boot Security 中不起作用【英文标题】:sec:authentication is not working in Spring Boot Security 【发布时间】:2021-10-11 13:35:00 【问题描述】:

我在显示未显示经过身份验证的用户全名时遇到问题。

我看不到sec:authentication 中定义的任何值。

即使我定义了 sprng 安全性并将其嵌入到支持 thymeleaf 的 html 代码中,该代码也无法正常工作。

我该如何解决?

这是我的 CustomerUserDetails 类

public class CustomerUserDetails implements UserDetails

public String getFullName() 
        
        LOGGER.info("CustomerUserDetails | getFullName: " + customer.getFirstName() + " " + customer.getLastName());
        
        return customer.getFirstName() + " " + customer.getLastName();
    



这是下面显示的依赖项。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity5</artifactId>
        </dependency>

下面是我的代码。

我只显示下面显示的这段代码来显示经过身份验证的用户全名

<a class="nav-link" th:href="@/account_details" ><b>[[$#request.userPrincipal.principal.fullName]]</b></a>

为什么 sec:authentication 不起作用?

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

你能说明什么不起作用吗?

尝试类似:

<a class="nav-link" th:href="@/account_details"><b sec:authentication="name"/></a>

验证您是否有权访问 Authentication 实例。然后试试:

<a class="nav-link" th:href="@/account_details"><b sec:authentication="details"/></a>

<a class="nav-link" th:href="@/account_details"><b sec:authentication="details.fullName"/></a>

验证您的功能。

【讨论】:

以上是关于sec:authentication 在 Spring Boot Security 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

未定义的属性名称(sec:authentication)

为啥 sec:authentication="name" 显示所有用户信息?

如何使用 Thymeleaf 配置 Spring Boot 并使用 sec:authentication 标签

Thymeleaf 不解释 sec 标签

来自不同 url 时的不同登录

Thymeleaf sec:身份验证标签不显示角色