品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:Spring Boot 4.0.2
我们在学习Java后端开发时,在进阶阶段会接触Spring Security安全框架,该框架能快速实现用户认证与权限控制,是大型项目的重要框架,也是目前大多数企业正在使用的安全框架。本文将为大家介绍Spring Security如何进行用户认证,Spring Security如何拦截认证和鉴权的相关内容。
一、Spring Security如何进行用户认证
我们在登录校园教务系统时,输入学号和密码,系统确认你是本校学生的过程,就是认证。Spring Security是“框架”,有了框架就不需要手动编写繁琐的校验,而是通过配置,就可以实现安全可靠的认证功能,下面我就为大家介绍一下Spring Security进行用户认证的逻辑。
1、添加依赖
在Spring Boot项目中,需要在pom.xml中添加Spring Security依赖,例如下图所示,添加依赖后,如果不写配置类,Spring Security默认会拦截除静态资源以外的大部分请求,默认要求用户先登录,才能访问受保护的接口,引入依赖后,我们再通过配置类来自定义哪些接口放行、哪些需要登录。

2、配置用户信息来源
实际开发中,一般会自己实现UserDetailsService接口,重写loadUserByUsername方法,根据用户名从数据库查询学生信息,查出相关信息,封装成UserDetails返回给Spring Security,用于后续框架认证,下图为了简单演示,暂时写死了用户名密码。

3、配置密码加密方式
我们还需要指定加密算法(如BCrypt)加密存储明文,可以直接注入PasswordEncoder Bean,使用BCryptPasswordEncoder作为加密算法,不需要自己写加解密逻辑。

二、Spring Security如何拦截认证和鉴权
拦截认证和鉴权是Spring Security的核心功能,Spring Security的拦截认证主要依赖“过滤器”,鉴权可结合“过滤器”和“拦截器”实现。

Spring Security的拦截和鉴权基于“过滤器链”实现,无需我们手动编写拦截逻辑,只需通过配置指定拦截规则和权限要求,上面已经为大家介绍了代码逻辑,下面我就实际为大家演示一下登录鉴权。
1、直接访问hello接口
访问hello接口,配置了无需鉴权,直接就可以通过浏览器访问。

2、访问/api开头的接口
配置了/api开头的接口需要登录鉴权,在未登录的情况下,浏览器访问/api接口会跳转到登录界面,提示需要登录,达到了拦截的目的,未登录的用户无法直接访问资源。

3、认证通过访问资源
此处用postman为大家演示需要登录的接口,选择认证方式并输入正确的账号密码后,可以顺利访问资源,输入错误(鉴权不通过),也会阻止访问。上文代码中账号密码没有经过复杂处理,仅做演示。

三、总结
以上就是Spring Security如何进行用户认证,Spring Security如何拦截认证和鉴权的相关内容。Spring Security是一款企业流行的安全认证框架,本文为大家介绍了该框架进行用户认证的方式,并且实际为大家演示了拦截认证的流程,希望对你有所帮助。