项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面
Posted 平凡加班狗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面相关的知识,希望对你有一定的参考价值。
系列文章目录
文章目录
- 系列文章目录
- 11-实验4-退出登录(注销)-禁用CSRF时的做法
- 12-实验4-退出-启用CSRF时的做法
- 13-实验5-基于角色或权限访问控制
- 14-实验5-基于角色或权限访问控制 -ROLE 前缀
- 15-实验5-基于角色或权限访问控制-ROLE的坑
- 16-实验6-自定义403页面
- 17-实验7-记住我-内存版(下一篇)
- 18-实验8-记住我-数据库版
- 19-实验9-数据库登录-默认实现介绍
- 20-实验9-数据库登录-创建UserDetailsService类
- 21-实验9-数据库登录-装配UserDetailsService
11-实验4-退出登录(注销)-禁用CSRF时的做法
最简单的方式
注意是写在 include下的navbar.jsp页面
在 navbar.jsp 页面 ,先注释掉这些没有用的代码,因为退出登录这个按钮是在 navbar.jsp 页面
这就是最简单的
什么其它的因素都不考虑
然后测试一下
登录进来后,点退出看看能不能成功,正常来说,是可以完美退出的
最简单的一种方式就是这样的,下面我们再看一下启用CSRF时的做法,这个就要复杂一些
12-实验4-退出-启用CSRF时的做法
把之前注释的表单,取消注释
我们希望,点这个超链接,就会提交表单
这些操作用户是没有任何感知的,页面上看不出
13-实验5-基于角色或权限访问控制
这个要清楚
SpringSecurity里面 对应一个用户 你要么有角色 要么有权限 都可以 进行资源访问,一个都没有就不行
要求
现在我们之前设置的tom和jerry都是没有学徒的角色的,肯定是访问不了的
level1下的资源只有 拥有 学徒 角色 的用户才能访问
加上角色信息,,然后重新登录,就可以访问了
要求 /level2/** 下 的 资源 必须是要 具备 如下的一个权限的 用户才能访问
既可以通过角色来控制访问的资源,也可以通过权限来控制访问的资源
14-实验5-基于角色或权限访问控制 -ROLE 前缀
同理权限我们也点进去
发现拼了一个表达式
根据我们跟踪代码发现 SpringSecurity 底层,角色加了前缀,权限是拼了一下,没有加前缀
我们再来看看设置角色和权限的时候底层是怎么做的
这里打断点的时候,必须要重新启动,因为是启动的时候读取设置的,不重启,没办法定位到断点
跟踪到这的时候,大概有意思是,我们自己不要加ROLE_
SpringSecurity会给我们加
15-实验5-基于角色或权限访问控制-ROLE的坑
为什么说上面那个,是因为下面这个原因
目前基于内存的权限当然是没什么问题,
将来做基于数据库,要从数据库里面查询数据出来的权限管理可能就有问题了
将来需要我们自己去写这一部分
我们自己写的时候也要像SpringSecurity框架那样,把前缀给加上
加前缀的原因
如果不加前缀 SpringSecurity 就无法区分角色和权限
16-实验6-自定义403页面
没有权限会跑到403 页面用户体验较差
页面已经有了,我们现在要做的事情是
没有权限后,怎么让它来到这个页面,而不是再报403
这个接口是在这里指定的,指定即可页面跳转
如何让这个 $message 生效
需要我们重写一个地方,让后自己往里面去放消息即可
需要注意的是,页面跳转也是在这个方法里面做了
好处是,你可以在页面出现错误之后,进一步进行处理,比如记录java日志等等
17-实验7-记住我-内存版(下一篇)
18-实验8-记住我-数据库版
19-实验9-数据库登录-默认实现介绍
20-实验9-数据库登录-创建UserDetailsService类
21-实验9-数据库登录-装配UserDetailsService
以上是关于项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面的主要内容,如果未能解决你的问题,请参考以下文章
项目一众筹网01_00此项目是SSM过渡到分布式项目(SpringBootSpringCloud)
项目一众筹网07_04_SpringSecurity记住我数据库登录-默认实现创建UserDetailsService类装配UserDetailsService怎么改源码