Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'iplat4j.admin.upload.fileLocation' in value "classpath*:spring/framework/context/platApplicationContext-upload-${iplat4j.admin.upload.fileLocation}.xml"
这是什么问题啊
启动 Spring Boot 应用程序时,无法解析属性占位符 'iplat4j.admin.upload.fileLocation'。它出现在值为 "classpath*:spring/framework/context/platApplicationContext-upload-${iplat4j.admin.upload.fileLocation}.xml" 的地方。
出现这个错误的原因可能是配置文件中没有正确设置 'iplat4j.admin.upload.fileLocation' 属性的值,或者属性的值无法被正确解析。
不知道你这个问题是否已经解决, 如果还没有解决的话:注销登录只需要在首页添加一个超链接 再添加一行代码:
(超链接的图标可以在https://semantic-ui.com/elements/icon.html中查找)
//注销,开启注销功能,删除cookies,清空session 注销之后自动跳转到首页
http.logout().deleteCookies("remove").invalidateHttpSession(true).logoutSuccessUrl("/");
那么还有一点就是登陆之后显示用户名,权限以及注销按钮等
这里还需要导入一个springsecurity整合thymeleaf的依赖:
<!-- springSecurity-thymeleaf整合包-->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
然后就是根据是否登陆来进行显示登陆按钮以及用户名了:
一定要注意这里的取反标志
<!--如果未登录,就显示登陆按钮
sec:authorize="isAuthenticated()用来验证是否已经登陆了
注意这里的方法前面有一个!取反标志,代表没有登陆
-->
<div sec:authorize="!isAuthenticated()">
<a class="item" th:href="@{/toLogin}">
<i class="address card icon"></i> 登录
</a>
</div>
<!-- <div th:if="${session.user}"></div>-->
<!--如果已经登陆 注销 显示用户名-->
<div sec:authorize="isAuthenticated()">
<a class="item">
用户名: <span sec:authentication="name"></span>
权限: <span sec:authentication="authorities"></span>
</a>
</div>
<div sec:authorize="isAuthenticated()">
<a class="item" th:href="@{/logout}">
<i class="sign out alternate icon"></i> 注销
</a>
</div>
然后还有对低权限设置不能显示高权限才能点击的内容
只需要添加一个sec:authorize="hasRole(‘vip1’),这里就代表有vip1可以进行展示:
<div>
<br>
<div class="ui three column stackable grid">
<!-- 菜单栏根据用户的权限进行部分显示-->
<div class="column" sec:authorize="hasRole('vip1')">
<div class="ui raised segment">
<div class="ui">
<div class="content">
<h5 class="content">Level 1</h5>
<hr>
<div><a th:href="@{/level1/1}"><i class="bullhorn icon"></i> Level-1-1</a></div>
<div><a th:href="@{/level1/2}"><i class="bullhorn icon"></i> Level-1-2</a></div>
<div><a th:href="@{/level1/3}"><i class="bullhorn icon"></i> Level-1-3</a></div>
</div>
</div>
</div>
</div>
<div class="column" sec:authorize="hasRole('vip2')">
<div class="ui raised segment">
<div class="ui">
<div class="content">
<h5 class="content">Level 2</h5>
<hr>
<div><a th:href="@{/level2/1}"><i class="bullhorn icon"></i> Level-2-1</a></div>
<div><a th:href="@{/level2/2}"><i class="bullhorn icon"></i> Level-2-2</a></div>
<div><a th:href="@{/level2/3}"><i class="bullhorn icon"></i> Level-2-3</a></div>
</div>
</div>
</div>
</div>
<div class="column" sec:authorize="hasRole('vip3')">
<div class="ui raised segment">
<div class="ui">
<div class="content">
<h5 class="content">Level 3</h5>
<hr>
<div><a th:href="@{/level3/1}"><i class="bullhorn icon"></i> Level-3-1</a></div>
<div><a th:href="@{/level3/2}"><i class="bullhorn icon"></i> Level-3-2</a></div>
<div><a th:href="@{/level3/3}"><i class="bullhorn icon"></i> Level-3-3</a></div>
</div>
</div>
</div>
</div>
</div>
</div>
效果如下: