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

发布时间:2023年12月18日

SpringBoot + Spring-Security

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

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

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

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

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

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

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

文章来源:https://blog.csdn.net/src1025/article/details/135021507
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。