【个人版】SpringBoot下Spring-Security自定义落地篇【四】

SpringBoot + Spring-Security

背景: 上篇文章在源码读取的基础上,根据自身代码习惯及需求,总结了一个自定义简单落地版本。后来在看到松哥写的博文(不太爱看官网),发现还有新的变种模式,虽然整体架构没有改变,但完全突破以往在拦截器和过滤器做安全验证的固有印象,故单独列出。

Spring-Security全局导读:
1、Security核心类设计
2、HttpSecurity结构和执行流程解读
3、Spring-Security个人落地篇

上一篇文章中,我们在拦截器中实现登陆参数解析和认证,这里我们还做了一个额外的操作,就是参数校验。虽然读取和校验参数我们可通过其他很多方式都能实现,但在SpringBoot高度集成自动化的环境下,多少显得有点多余,尤其是代码中存在着大量if…else语句。下图为落地篇拦截器版本:
在这里插入图片描述

参数序列化和校验的过程,在普通接口的处理过程中,都是由框架自动执行,我们只需要根据场景设置正确的注解就可以了,@RequestBody + @Valid那一套加上全局异常处理是目前很多springboot项目使用套式,登录既然也是传参和校验,是否可以同样用接口的形式完成呢?

在spring-security框架下,当然可以,而且实现也很美观,如下简述流程:
一、security安全过滤器链侧放开登录URL
在这里插入图片描述
二、编写对应的控制器及对应鉴权代码
在这里插入图片描述
从上图可以看到在过滤器中完成鉴权操作,且将参数反序列化及校验的过程交给了框架,但是要注意将授权信息保存在上下文中,这样后续请求在经过原有的安全框架时才会被放行。

三、必要的全局异常控制
在这里插入图片描述
此处仅简单包装登录信息错误,其他参数错误等场景可自行处理,原有框架中也会提供对应的授权失败处理器。

这样在利用security框架的权限管理和spring的请求封装&校验一体化逻辑,我们自己可需要编写的代码就极少了。虽然整体改变不大,但打破我固有的思维,特在此记录。如果想了解更多的全局封装,可参考往期博文

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值