spring security登录接口鉴权原理

文章讲述了在使用SpringSecurity和Gateway进行统一鉴权时遇到的密码加密问题。登录接口调用findByUsername方法验证账号密码,但发现数据库存储明文密码,而代码中进行了加密处理。通过IDEA调试,作者找到了密码加密的方式,并发现登录参数的密码也需要经过相同方式加密后与数据库密码对比。当使用错误的密码时,生成的密文不同,而正确密码则能匹配成功。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值