环境搭建
创建项目
1.创建springboot项目
2.创建controller
1 |
|
3.启动项目测试controller
整合springsecurity
1.引入相关依赖
1 | <!--引入spring security依赖--> |
2.再次启动项目
- 1.启动完成后控制台生成一个密码
Using generated security password: b6db1f88-92a1-4e03-81ea-a949e0c11786
- 2.访问 hello 发现直接跳转到登录页面
这就是 Spring Security 的强大之处,只需要引入一个依赖,所有的接口就会自动保护起来!
流程分析
请求 /hello 接口,在引入 spring security 之后会先经过一些列过滤器
在请求到达 FilterSecurityInterceptor时,发现请求并未认证。请求拦截下来,并抛出 AccessDeniedException 异常。
抛AccessDeniedException 的异常会ExceptionTranslationFilter 捕获,Filter 中会调用 LoginUrlAuthenticationEntryPoint#commence 方法给客户端返回 302,要求客户端进行重定向到 /login 页面。
客户端发送 /login 请求。
/login 请求会再次被拦截器中 DefaultLoginPageGeneratingFilter 拦截到,并在拦截器中返回生成登录页面。
自定义认证
自定义资源权限规则
- /index 公共资源
- /hello … 受保护资源 权限管理
在项目中添加如下配置就可以实现对资源权限规则设定:
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~