二、Spring Security认证和授权-基于表单的认证流程及源码解析

    科技2022-08-06  104

    学完上期核心原理解析,我们已经知道了Spring Security 是由一系列的过滤器组成,通过拦截指定URL实现用户登录的操作。今天我们基于Spring Security 自带的UsernamePasswordAuthenticationFilter过滤器进行表单验证的开发。

    一、表单验证过程源码解析

    1、页面输入用户名密码,提交登录请求。 2、登陆请求被UsernamePasswordAuthenticationFilter过滤器拦截,开始进行登录验证。 3、UsernamePasswordAuthenticationFilter获取用户名(username)、密码(password)参数,并创建一个未认证的UsernamePasswordAuthenticationToken,然后调用AuthenticationManager进行登录验证。

    4、AuthenticationManager不直接进行登录验证,而是使用DaoAuthenticationProvider进行验证,DaoAuthenticationProvider调用UserDetailsService(自定义)对象的loadUserByUsername方法获取用户信息。

    5、然后对获得的对象进行一系列的检查(自定义),包括预检查、附加检查、后检查。预检查检查用户是否被冻结、是否启用、是否过期。附加检查进行用户名密码验证。

    6、登陆成功后将验证过的用户信息存储在SecurityContext中,然后调用登录成功处理器(自定义)。

    二、表单验证实操

    1、 自定义AuthUserDetails类,实现UserDetails接口,用户验证的方法根据自己的业务需要进行具体实现。

    2、 自定义AuthUserDetailsService类,实现UserDetailsService接口,根据具体业务实现loadUserByUsername方法。

    3、 自定义登录成功处理器RestAuthenticationSuccessHandlerr类,继承SavedRequestAwareAuthenticationSuccessHandler,重写onAuthenticationSuccess方法。

    4、 自定义登录失败处理器RestAuthenticationFailureHandler类,继承SimpleUrlAuthenticationFailureHandler,重写onAuthenticationFailure方法。

    5、 编写配置类SecurityConfig继承WebSecurityConfigurerAdapter。重写configure方法。 6、 编写前端登录页面,进行登录。

    三、资源管理系统演示

    项目演示地址:http://175.24.75.121/#/login 用户名:visitor 密码:visitor

    四、GITHUB

    前端工程:https://github.com/STIll-clx/rms-admin-web 后端工程:https://github.com/STIll-clx/rms

    五、专题导航

    上一节:Spring Security核心原理及Demo演示 下一节:Spring Security认证和授权-授权流程及源码解析

    欢迎点赞加关注!(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤

    Processed: 0.010, SQL: 8