Spring Security 基于表单登录的认证模式

本文详细介绍了Spring Security实现基于表单登录的认证模式。内容包括思维导图、原理分析,以及登录前置处理(用户信息配置、密码加密器设置)、登录中处理(登录校验)和登录后置处理(登录成功与失败的处理方案)。通过实例展示了如何配置UserDetails、UserDetailsService、PasswordEncoder,以及自定义登录成功和失败处理器。
摘要由CSDN通过智能技术生成

                  Spring Security 基于表单登录的认证模式

一、思维导图

二、原理分析

当我们在项目中引入 Spring Security 的相关依赖后,默认的就是表单登录形式。在开始之前,如果是我们自己来实现表单登录的功能,那么我们需要做哪些工作呢?

就我个人而言,我可能会考虑到以下几点:

   1. 配置用户信息,存储如账号、密码等;密码不能以明文传输,需要加密功能

   2. 执行校验

   3. 认证成功或者失败的处理方案

   大致的流程图如下:

上面我们自己设想的实现方案,属于"低配版"模式,下面我们来研究 Spring Security 是怎么做的。Spring Security的思路和我们大同小异,它的优点在于其提供了很好的封装,提高了框架本身的可扩展性。

Spring Security 的实现步骤如下:

  1. UsernamePasswordAuthenticationFilter拦截器拦截前端传递的表单登录请求,将登录信息(username、password)封装成 UsernamePasswordAuthenticationToken,传递给 AuthenticationManager认证管理器

  2. AuthenticationManager认证管理器根据Token的类型遍历获取对应的Provider,也即是 DaoAuthenticationProvider,执行认证流程

  3. DaoAuthenticationProvider 依靠 PasswordEncoder 和 UserDetailsService对登录请求进行验证

  4. 验证通过,由AuthenticationSuccessHandler 认证成功处理器进行处理

  5. 验证失败,由AuthenticationFailureHandler 认证失败处理器进行处理

    流程图如示所示:

 1.UsernamePasswordAuthenticationFilter 表单登录拦截器,用以捕获前端传递的登录信息(username、  password),并将登录信息封装成某些Token

 2.AuthenticationManager 认证管理器,可简单的理解为分配工作的领导。DaoAuthenticationProvider DAO认证处理器,相当于被安排干活的童鞋;从名字DAO也可以简单的推测出:它与数据库中的用户信息密不可分。

 3.PasswordEncoder 密码加密器,密码不能明文传输,需要加密。UserDetailsService用户信息Service层,这个也很好理解,前端传递的登录信息肯定是有对应的数据库实体存储。

 4.AuthenticationSuccessHandler 认证成功处理器 AuthenticationFailureHandler认证失败处理器。

  经过上述的原理分析,我们大体上知道整个表单登录有三个模块需要处理。

  1. 登录前置处理:用户信息的封装、密码加密器的设置

  2. 登录中处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫赫有安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值