spring security登录接口鉴权原理

使用了gateway+spring security,项目当初打算使用gateway统一鉴权的,整合步骤点击此处
当时没有深入security,今天偶然看代码发现验证密码的时候加密了,但是登录表单提交的密码没有加密。看下代码吧

登录接口验证账号密码是否正确

  1. postman登录接口调用
    在这里插入图片描述

  2. findByUsername方法是登录接口验证密码,我们需要实现此方法来读取数据库账号密码。数据库存储的是明文密码,代码中封装返回值的时候进行加密了,那么内部怎么验证密码一致的呢?
    在这里插入图片描述

  3. 使用idea打断点查看是谁调用的findByUsername这个方法:
    在这里插入图片描述
    在这里插入图片描述
    这样就找到是谁调用的了,然后继续执行,发现这个方法是比对密码的
    在这里插入图片描述
    在这里插入图片描述

  4. 发现是加密后的数据库密码前缀代表了加密类型方式
    在这里插入图片描述
    支持的加密类型:在这里插入图片描述

  5. 到此获取到了加密方式,继续下一步
    在这里插入图片描述

  6. 发现是把登录接口入参的账号给加密了,然后判断加密后的密码和数据库表的密码是否一致 在这里插入图片描述
    这个加密逻辑很复杂,就是把密码加密
    在这里插入图片描述
    在这里插入图片描述

  7. 这是错误的密码,生成的密文不一致
    在这里插入图片描述

  8. 使用正确的密码调用登录接口,生成的密文一致在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48835367/article/details/131475825
今日推荐