练涛

thymeleaf 配合 Spring Security 权限判断时,sec:authentication无法取到值(null)

以下是实例:

   <div sec:authorize="isAuthenticated()"  class="row" >
				<div class="dropdown">
					<a class=" dropdown-toggle" href="/u/waylau" th:href="@{'/u/' + ${#authentication.name}}" data-toggle="dropdown"><span sec:authentication="name"></span></a>
					<div class="dropdown-menu" >
						<a class=" dropdown-item" href="/u/waylau" th:href="@{'/u/' + ${#authentication.name}}">个人主页</a> 
						<a class="dropdown-item" href="/u/waylau/profile" th:href="@{'/u/' + ${#authentication.name}} + '/profile'" >个人设置</a>
						<a class="dropdown-item" th:href="@{/admins}" th:if="${#authentication.name}=='admin'" >管理系统</a>
					</div>
				</div>
 				<div>
 					<a href="/u/waylau/blogs/edit" th:href="'/u/' + ${#authentication.name} + '/blogs/edit'" class="btn btn-outline-success my-2 my-sm-0">写博客</a>
 				</div>
                
				<form action="/logout" th:action="@{/logout}" method="post">
					<input class="btn btn-outline-success " type="submit" value="退出">
				</form>
            </div>

解决方法:

thymeleaf 的版本应该和 Thymeleaf extras版本匹配。
设置thymeleaf-layout-dialect.version

比如:都用3.+
pom.xml添加

  <properties>
        <java.version>1.8</java.version>
        <thymeleaf.version>3.0.3.RELEASE</thymeleaf.version>
        <thymeleaf-layout-dialect.version>2.2.0</thymeleaf-layout-dialect.version>
    </properties>

<!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 -->
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-springsecurity4</artifactId>
            <version>3.0.4.RELEASE</version>
        </dependency>
posted @ 2020-02-25 21:24  练涛  阅读(1511)  评论(0编辑  收藏  举报