sec: authorize und sec: authentication-Annotationen funktionieren nicht

Ich habe ein Spring + Thymeleaf-Projekt mit dem folgenden Ansichtscode.

<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring3-3.dtd">
<html
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:th="http://www.thymeleaf.org"
        xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>
    <title>Contacts</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div id="content">
    <h1>Welcome to the site!</h1>
    <p th:if="${loginError}">Wrong user or password</p>
    <form th:action="@{/j_spring_security_check}" method="post">
        <label for="j_username">Email address</label>:
        <input type="text" id="j_username" name="j_username"/> <br/>
        <label for="j_password">Password</label>:
        <input type="password" id="j_password" name="j_password"/> <br/>
        <input type="submit" value="Log in"/>
    </form>
</div>

<div sec:authorize="isAuthenticated()">
    User: <span sec:authentication="name">miquel</span>
</div>
</body>
</html>

Die Attribute sec: authorize und sec: authentication funktionieren nicht wie erwartet - das div wird immer angezeigt, auch wenn kein Benutzer angemeldet ist und der Span immer "miquel" lautet.

Verfolgt einen relevanten Ausschnitt aus meiner Controller-Klasse.

@RequestMapping(value = "/welcome.html") 
public String wellcome() { 
    Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 
    System.out.println("username: " + auth.getName()); 

    return "home"; 
}

Die println-Anweisung funktioniert wie erwartet - wenn kein Benutzer angemeldet ist, wird "anonymousUser" ausgegeben, andernfalls der Benutzername.

Was mache ich falsch?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage