Thymeleaf + Spring 安全性 -> #authentication 在 link 位置与另一个位置不工作

Thymeleaf + Spring Secucity -> #authentication not working in link location combined with another

我正在尝试在 link (@{}) 中使用符号 ${#authentication.systemUser.tenant.url}。当我尝试在文本位置 (${}) 中做同样的事情时,这种用法对我有用。

我的代码:

文字位置:

<strong th:text="${#authentication.systemUser.name}" />

这是在屏幕上打印 Maciel Bombonato

Link 位置:

<a th:href="@{/${#authentication.systemUser.tenant.url}/user}" > 
    <i class="fa fa-tachometer"></i>
    <span th:text="#{user.dashboard}" />
</a>

这会创建 link 到 http://localhost:8080/${#authentication.systemUser.tenant.url}/user,但我正在等待 http://localhost:8080/apolo/user

写完这个问题我做最后一个测试和工作。

我的解决方案如下。

首先创建一个div使用th:with创建一些变量并涉及links并且在这个th:with中将组成link .

    <div th:with="dashboard=${'/'} + ${#authentication.systemUser.tenant.url} + ${'/user'},
          profile=${'/'} + ${#authentication.systemUser.tenant.url} + ${'/user/view/'} + ${#authentication.systemUser.id}
" >
        <a th:href="@{${dashboard}}" >
            <i class="fa fa-tachometer"></i>
            <span th:text="#{user.dashboard}" />
        </a>

    </div>

在这种情况下,我在DIV中声明了所有变量,然后在link中使用它。

现在生成的 link 是:http://localhost:8080/apolo/user

我认为这个问题与使用来自 a 的值构建 href url 有关 变量表达式。

您可以使用管道 | 执行文字替换 (doc)。

<a th:href="@{|/${#authentication.systemUser.tenant.url}/user|}" > 
    <i class="fa fa-tachometer"></i>
    <span th:text="#{user.dashboard}" />
</a>