Ich habe ein Spring + Thymeleaf-Projekt mit dem folgenden View-Code.sec: authorize und sec: Authentifizierungsanmerkungen funktionieren nicht
<!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 sec: autorisieren und sec: Authentifizierung Attribute wie erwartet funktionieren nicht - das div wird immer angezeigt, auch wenn kein Benutzer angemeldet ist, und die Spanne liest immer „Miquel“.
Folgt einem 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, druckt es „AnonymousUser“, sonst den Benutzernamen.
Was mache ich falsch?
Mögliche Lösung: http://stackoverflow.com/questions/32904857/secauthorize-returning-true-for-both-isauthenticated-and -isanonymous-in-thy/40492335 # 40492335 – bpgriner