之前的认证授权,退出功能已经在配置类里面实现了。现在还有一个问题
问题
就是前端页面的东西,不同的权限看见的东西是不一样的,这个咋实现。之前我们可以在前段用if判断来看当前的用户的权限进行,但是现在可以和thymeleaf整合,使用这个就可以实现。具体如何做
整合步骤
1 导入依赖
代码语言:javascript复制<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>
2 前段导入springsecurity和thymeleaf的标签
手打这个之后,alt enter 这个之后就导入了,我们就可以看到页面出现了这个
其实这个就可以使用了,但是我希望在页面写标签的时候有提示,那么这个就要写全,所以这样写
这样在前段就可以对应的标签
代码语言:javascript复制如果注销404了,就是因为它默认防止csrf跨站请求伪造,因为会产生安全问题,我们可以将请求改为post表单提交,或者在spring security中关闭csrf功能;我们试试:在 配置中增加 http.csrf().disable();
http.csrf().disable();//关闭csrf功能:跨站请求伪造,默认只能通过post方式提交logout请求
http.logout().logoutSuccessUrl("/");
代码语言:javascript复制 <!--登录注销-->
<div class="right menu">
<!--如果未登录-->
<div sec:authorize="!isAuthenticated()">
<a class="item" th:href="@{/login}">
<i class="address card icon"></i> 登录
</a>
</div>
<!--如果已登录-->
<div sec:authorize="isAuthenticated()">
<a class="item">
<i class="address card icon"></i>
用户名:<span sec:authentication="principal.username"></span>
角色:<span sec:authentication="principal.authorities"></span>
</a>
</div>
<div sec:authorize="isAuthenticated()">
<a class="item" th:href="@{/logout}">
<i class="address card icon"></i> 注销
</a>
</div>
</div>
</div>
</div>