Spring Security提供了支持通过HTML表单提供用户名和密码。本节详细介绍了Spring Security中表单身份验证的工作原理。
本节将介绍Spring Security中的基于表单的登录工作原理。首先,我们将看到用户如何被重定向到登录表单。
第1步,用户首先对其未经授权的资源(/private)发出未经身份验证的请求。
第2步,Spring Security的AuthorizationFilter通过抛出AccessDeniedException指示拒绝未经身份验证的请求。
第3步,由于用户未经身份验证,ExceptionTranslationFilter启动身份验证并使用配置的AuthenticationEntryPoint向登录页面发送重定向。在大多数情况下,AuthenticationEntryPoint是LoginUrlAuthenticationEntryPoint的实例。
第4步,浏览器请求被重定向到的登录页面。
第5步,应用程序内部的某个部分必须提供登录页面。
当用户名和密码被提交时,UsernamePasswordAuthenticationFilter对用户名和密码进行身份验证。UsernamePasswordAuthenticationFilter扩展了AbstractAuthenticationProcessingFilter,因此以下图应该看起来非常相似: