SpringSecurity学习(一)

Spring Security帐号密码认证

相关类图

SpringSecurity类图


相关时序图

SpringSecurity时序图


流程解释

  • UsernamePasswordAuthenticationFilter类继承AbstractAuthenticationProcessingFilter类,该类调用attemptAuthentication方法,
    该方法现将用户名及密码通过UsernamePasswordAuthenticationToken.unauthenticated()方法封装成UsernamePasswordAuthenticationToken对象(即Authentication对象),
    再调用 this.getAuthenticationManager().authenticate()方法
  • AuthenticationManager接口找到ProviderManager实现类的authenticate()方法,通过getProviders()方法遍历AuthenticationProvider集合,找到
    AbstractUserDetailsAuthenticationProvider类调用authenticate()方法
  • AbstractUserDetailsAuthenticationProvider类的authenticate()方法需要调用子类DaoAuthenticationProvider的retrieveUser()方法
  • retrieveUser()方法调用UserDetailsService接口的loadUserByUsername()方法,因此UserDetailsService接口需要用户实现其方法
  • loadUserByUsername()方法调用完毕需要返回UserDetails对象,UserDetails是个接口,仍需要用户实现