Thymeleaf sec:授权在 Spring 应用程序上不起作用

问题描述 投票:0回答:1

我为一项作业制作了网站标题,我希望能够根据他们是否登录来显示不同的内容。问题是秒:授权无法正常工作,没有错误或警告表明原因。

这是我的头文件,我试图在其中显示登录和注册(如果未登录)和注销(如果已登录)。但无论如何,它们都会出现。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://thymeleaf.org" xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity5">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<header class="masthead mb-auto" th:fragment="header">
    <div class="cover-container d-flex h-100 p-3 mx-auto flex-column">
            <div class="inner">
                <div  class="Lucida_Handwriting">
                    <a class="Lg" href=".." >
                        <h3 class="logo-brand" id="Logo">Divorce app</h3>
                    </a>
                </div>
                <nav class="nav nav-masthead justify-content-center">
                    <a class="nav-link active" href="/" th:href="@{/}">Home</a>
                    <a sec:authorize="!isAuthenticated()" class="nav-link" href="/login" th:href="@{/login}">Login</a>
                    <a sec:authorize="isAuthenticated()" class="nav-link fw-bold py-1 px-0" href="/logout" th:href="@{/logout}">Logout</a>
                    <a sec:authorize="!isAuthenticated()" class="nav-link fw-bold py-1 px-0" href="/register" th:href="@{/register}">Register</a>
                    <a class="nav-link" href="/contact">Contact</a>
                </nav>
            </div>
    </div>
</header>
</body>
</html>

这是我的依赖项。

spring-boot-starter-security
&
spring-boot-starter-thymeleaf
的版本是 3.0.1

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

还注意到它在 html 中传递,但我认为不应该这样做

<a sec:authorize="!isAuthenticated()" class="nav-link" href="/login">Login</a>
<a sec:authorize="isAuthenticated()" class="nav-link fw-bold py-1 px-0" href="/logout">Logout</a>
<a sec:authorize="!isAuthenticated()" class="nav-link fw-bold py-1 px-0" href="/register">Register</a>

尝试使用

thymeleaf-extras-springsecurity4
但没有成功。 尝试使用旧版本的
thymeleaf-extras-springsecurity5
,但这也不起作用。 尝试用
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity5"
替换
 xmlns:sec="http://www.thymeleaf.org/extras/spring-security"
但没有成功。

编辑:添加了 html 代码而不是图像

spring spring-boot spring-security thymeleaf
1个回答
0
投票

尝试添加以下代码:

xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"
© www.soinside.com 2019 - 2024. All rights reserved.