【Spring实战】----Security4.1.3认证过程源码分析

上一篇的配置中基本上涵盖了认证过程中的各种情况,现通过时序图对其用到的Security源码进行分析

认证时序图

《【Spring实战】----Security4.1.3认证过程源码分析》

《【Spring实战】----Security4.1.3认证过程源码分析》

上面两幅图(分别是鉴权过程和认证登录过程)中的操作过程(图中不全)涵盖了下面的

认证过程

如果用户直接访问一个受保护的资源,那么认证过程将如下:

1、FilterSecurityInterceptor对其进行鉴权,没有认证或者没有权限则抛异常给ExceptionTranslationFilter,根据没有认证或者没有权限分别进行处理。

2、没有认证的情况下LoginUrlAuthenticationEntryPoint引导用户进行登录,通常是重定向到一个基于form表单进行登录的页面,具体视配置而定。

3、用户输入用户名和密码后请求认证,UsernamePasswordAuthenticationFilter会户名和密码封装成一个UsernamePasswordAuthenticationToken对象,然后把它传递给AuthenticationManager进行认证。

4、如果认证时用户不存在或者密码错误由SimpleUrlAuthenticationFailureHandler进行处理,跳转到设置的页面(一般是登录页面),上一篇中有说明

5如果认证成功则会保存返回的AuthenticationSecurityContext,然后(SavedRequestAwareAuthenticationSuccessHandler)默认会将用户重定向到之前访问的页面(可以自定义,上一篇中有说明)。

6、用户登录认证成功后再次访问之前受保护的资源时FilterSecurityInterceptor会对用户进行权限鉴定,如不存在对应的访问权限,则AccessDeniedHandlerImpl会返回403错误码(可以自定义返回到指定页面,上一篇中有说明)。

 

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/honghailiang888/article/details/53781393
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞