通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往复以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度。
温故知新
正片:表单登录
终于回到了这一部分
标题:表单登录(Form Login)
在生活中,表单登录无处不在
我们可以更简单去理解表单是什么!承载账号密码的就是表单,具体点叫HTML表单
接下来,看到第一句:Spring Security提供了对通过HTML表单提供用户名和密码的支持。
翻译一下
第一层:Spring Security提供了支持
第二层:Spring Security提供了对HTML表单的支持
第三层:Spring Security提供了对HTML表单提供的用户名和密码的支持
第三层:Spring Security提供了对通过HTML表单提供用户名和密码的支持
Spring Security提供了对HTML表单的支持,因为我们的前提是HTML表单是账号密码的载体
对HTML表单的支持,就是对HTML表单提供的账号密码支持,前提账号密码不能为空,也就是通过
官方详细又细节的解释,不是单独的HTML表单哦,是要有内容的HTML,而且还是特指账号密码
下一句:本节将详细介绍基于表单的认证在Spring Security中如何工作。
注意:SecurityFilterChain是不具备接受请求的;接受请求,响应请求的是Servlet容器
作者经实践抽象后的解读:
你在浏览一个网站,该网站在举行一个活动,你想参与
于是,你点击了秒杀,不是网页的跳转而是一个大大提示框——上面写着请登录
每一次点击秒杀活动,就相当于发送一次请求至Servlet容器
请求就相当于门票,门票带有各种信息,Servlet过滤器通过对比门票信息进行认证放行
回到这张图片
发送请求,相对于递门票,检察员Filter,通过对门票的对比,发现这是一张不符合要求的门票,就把这张门票递给了名为ExceptionTranslationFilter的检察员,ExceptionTranslationFilter的检察员按照标准进行了剩余操作
1:用户递门票
2:SpringSecurity的AuthoriztionFilter抛出异常,表明门票被拒绝
3:门票一级一级往下传,传入EceptionTranslationFilter检察员,检察员根据员工手册,告诉用户回到售票站,换一张
4:用户回到售票站
5:进入必须要规定门票
下一句:当用户名和密码被提交后,UsernamePasswordAuthenticationFilter
会对用户名和密码进行认证。UsernamePasswordAuthenticationFilter
扩展了 AbstractAuthenticationProcessingFilter,所以下面的图看起来应该很相似。
这就是为什么产生异常的原因,因为通过这个过滤器产生的异常,异常传入至专门的过滤器
这是一个配置,明确的SecurityFilterChain配置
总结:
虽然感觉什么都没讲,但是总结还是要的
第一:SpringSecurity提供对HTML表单的支持
第二:通过SecurityFilterChain,可以设置HTML表单