跳到主要内容

13--基于过滤器实现图形验证码

前言

在前两个章节中,一一哥 带大家学习了Spring Security内部关于认证授权的核心API,以及认证授权的执行流程和底层原理。掌握了这些之后,对于Spring Security,我们不仅做到了 "知其然",而且也做到了 "知其所以然"

在现在的求职环境下,只知道某个技能点的用法是远远不够的,面试官会要求我们研究某个技术的底层实现原理,所以虽然前面的两章内容掌握起来很有难度,但是还是希望各位小伙伴结合源码认真研读,这样你才能在编程之路上走的更远更高!

总是研究底层,对于我们初学者来说,既有难度,也会影响咱们的学习积极性,所以从本篇文章开始,咱们继续学习Spring Security的其他用法,比如我们学习一下如何在Spring Security中添加执行自定义的过滤器,进而实现验证码校验功能。

一. 验证码简介

在进行验证码编码实现之前,壹哥 先给各位介绍一下验证码的概念和作用。

**验证码(CAPTCHA):全称是Completely Automated Public Turing test to tell Computers and Humans Apart,翻译过来就是“全自动区分计算机和人类的图灵测试”。**通俗的讲,**验证码就是为了防止恶意用户采用暴力重试的攻击手段而设置的一种防护措施。**我们在进行用户注册、登录、或者论坛发帖时都可以利用验证码,对某些恶意用户利用计算机发起无限重试进行必要的拦截限制。

接下来在Spring Security的环境中,我们可以用如下两种方案实现图形验证码:

> 1. 基于自定义的过滤器来实现图形验证码; > 2. 基于自定义的认证器来实现图形验证码。

在本篇文章中,壹哥 先利用第一种方案,也就是基于自定义的过滤器的方式,来教会大家如何实现图形验证码,请继续往下看哦。

二. 基于过滤器实现图形验证码

1. 实现概述

在Spring Security中,实现验证码校验的方式有很多种,其中基于过滤器来实现图形验证码是最简单的方式。小伙伴可能会问,过滤器如何实现验证码校验功能呢?基于什么原理?这个其实很简单,流程原理就是我们先自定义一个过滤器Filter,处理验证码的验证逻辑,然后把该过滤器添加到Spring Security过滤器链的某个合适位置。当匹配到登录请求时,过滤器会对验证码进行校验,如果成功则放行,如果失败则结束当前验证请求。