gpt4 book ai didi

spring-mvc - sec:authorize和sec:authentication注释不起作用

转载 作者:行者123 更新时间:2023-12-03 07:59:56 26 4
gpt4 key购买 nike

我有一个带有以下 View 代码的Spring + Thymeleaf项目。

<!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>

sec:authorize和sec:authentication属性无法正常工作-即使没有用户登录,div也会始终显示,并且跨度始终显示为“miquel”。

遵循我的 Controller 类中的相关片段。
@RequestMapping(value = "/welcome.html") 
public String wellcome() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
System.out.println("username: " + auth.getName());

return "home";
}

println语句按预期方式工作-如果没有用户登录,则打印“anonymousUser”,否则显示用户名。

我究竟做错了什么?

最佳答案

在将我的应用程序与Thymeleaf&Spring Security演示应用程序进行了紧密比较之后,我发现了错误的根源。

显然,为了让Thymeleaf处理sec:authorizesec:authentication属性,您需要将SpringSecurityDialect注册为模板引擎bean的其他方言。

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver" />
<property name="additionalDialects">
<set>
<bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect" />
</set>
</property>
</bean>

这是令人惊讶的,因为 the related Thymeleaf documentation page上没有提及该事实。我希望这对将来会遇到相同问题的其他人有所帮助。

关于spring-mvc - sec:authorize和sec:authentication注释不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com