项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面

Posted 平凡加班狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目一众筹网07_03_SpringSecurity退出登录禁用CSRF基于角色或权限访问控制自定义403页面相关的知识,希望对你有一定的参考价值。

系列文章目录

文章目录

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)

项目一众筹网01_03环境搭建_声明式事务

项目一众筹网03_5_RBAC(权限管理)模型-概述

项目一众筹网03_5_工作模式探讨同步和异步探讨

项目一众筹网07_04_SpringSecurity记住我数据库登录-默认实现创建UserDetailsService类装配UserDetailsService怎么改源码

项目一众筹网03_4_管理员维护_更新_增删查改全部完结_隐藏域的使用