在新搭建的项目中,使用Spring Security
来实现认证和授权
,在前台页面需要显示当前登录的用户名,可以使用Spring security自带的sec标签
来获取;出现的问题就是sec标签不起作用
;经各种搜索,常见的原因是Spring security ,Spring,Thymeleaf使用的版本不对
。
最准确的方法是查看官网相关文档,对比自己项目的pom.xml
文件确定自己使用的版本是否正确
相关地址Thymeleaf - Spring Security integration modules
如何在html等使用sec:*
<html lang="en" xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
</html>
sec:*
判断是否有登陆,用户未登录显示登录两个字,登录之后显示用户名
sec:authorize="isAnonymous()" ,sec:authorize="isAuthenticated()"
为true
是才显示该secu所在的标签
<span class="login_or_register_string">
<a href="/home/login.do" th:href="@{/home/login.do}" sec:authorize="isAnonymous()" id="user_name_a" >登录</a>
<!--注意sec:authentication="name",必须是name-->
<a href="/personal_info.do" class="user_name_a" sec:authorize="isAuthenticated()" sec:authentication="name" id="user_name_a"></a>
</span>
如果你的版本正确,但是sec标签依旧不起作用,我就是这样的,对比官网给出的适配版本,我的都在正确的范围内,可把我给难住了,查了各种博客无果之后,回头看起了官网,
如果,你的版本符合官网的要求,那就看看你是否配置了SpringSecurityDialect
吧。
ヾ(◍°∇°◍)ノ゙,因为我是配置好了SSM框架之后,又集成的spring security,所以忘记配置这一块了,o(╥﹏╥)o所以sec:*标签不起作用
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
<!-- 在thymeleaf中使用使用sec:* -->
<property name="additionalDialects">
<set>
<bean
class="org.thymeleaf.extras.springsecurity4.dialect.SpringSecurityDialect" />
</set>
</property>
</bean>
最近新搭建了一个基于Maven的SSM项目,其中还集成了Spring security,Tymeleaf,MySQL等,一路真的是填坑和挖坑的过程,哈哈,一定要多看官方文档,其次才是网友们的各种博客。