Spring Security登录验证过程详解

前端:
在前端页面输入username和password,通过地址login访问验证。
后台:

  1. 调用 AbstractAuthenticationProcessingFilter.doFilter()方法
    原因:SpringSecurity对Spring Web项目提供支持,AbstractAuthenticationProcessingFilte 作为验证请求入口的
    2.在AbstractAuthenticationProcessingFilter.doFilter()调用UsernamePasswordAuthenticationFilter中的attemptAuthentication()方法
    2.1 该方法获取请求中带的参数username和password
    2.2 将表单请求的信息(用户、密码等信息)赋值给 UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken(username, password);
    2.3 调用getAuthenticationManager().authenticate(authRequest)对用户密码的正确性进行验证。
    3.调用ProviderManager中的authenticate()方法
    3.1 根据用户名,查看缓存中是否存在用户实体对象
    如果存在,只对密码进行验证,
    如果不存在,先验证用户信息,执行DaoAuthenticationProvider中的retrieveUser方法,调用loadUserByUsername()方法,注意这里的loadUserByUsername()方法需要自定义类实现UserDetailsService接口并重写loadUserByUsername()方法,获取一个UserDetails对象。 然后一些属性验证之后,对用户密码进行验证。
    4.调用passwordEncoder.isPasswordValid()方法验证密码,
    该方法中调用matches()方法判断输入密码和数据库密码是否相同。
    验证通过返回true,成功登录系统。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值