权限控制和注销
1、开启自动配置的注销的功能
1 | //定制请求的授权规则 |
2、我们在前端,增加一个注销的按钮,index.html
导航栏中
1 | <div class="btn-group btn-group-lg"> |
3、我们可以去测试一下,登录成功后点击注销,发现注销完毕会跳转到登录页面!
4、但是,我们想让他注销成功后,依旧可以跳转到首页,该怎么处理呢?
1 | // .logoutSuccessUrl("/"); 注销成功来到首页 |
5、测试,注销完毕后,发现跳转到首页OK
6、我们现在又来一个需求:用户没有登录的时候,导航栏上只显示登录按钮,用户登录之后,导航栏可以显示登录的用户信息及注销按钮!还有就是,比如admin
这个用户,它只有 vip2,vip3
功能,那么登录则只显示这两个功能,而vip1
的功能菜单不显示!这个就是真实的网站情况了!该如何做呢?
我们需要结合thymeleaf中的一些功能
sec:authorize="isAuthenticated()"
:是否认证登录!来显示不同的页面
Maven依赖:
1 | <!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-springsecurity4 --> |
7、修改我们的 前端页面
导入命名空间
1 | xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5" |
修改导航栏,增加认证判断
重启测试,我们可以登录试试看,登录成功后确实,显示了我们想要的页面;
9、如果注销404
了,就是因为它默认防止csrf
跨站请求伪造,因为会产生安全问题,我们可以将请求改为post
表单提交,或者在spring security
中关闭csrf功能;我们试试:在 配置中增加 http.csrf().disable();
1 | http.csrf().disable();//关闭csrf功能:跨站请求伪造,默认只能通过post方式提交logout请求 |
10、我们继续将下面的角色功能块认证完成!