使用了gateway+spring security,项目当初打算使用gateway统一鉴权的,整合步骤点击此处
当时没有深入security,今天偶然看代码发现验证密码的时候加密了,但是登录表单提交的密码没有加密。看下代码吧
登录接口验证账号密码是否正确
-
postman登录接口调用
-
findByUsername方法是登录接口验证密码,我们需要实现此方法来读取数据库账号密码。数据库存储的是明文密码,代码中封装返回值的时候进行加密了,那么内部怎么验证密码一致的呢?
-
使用idea打断点查看是谁调用的findByUsername这个方法:
这样就找到是谁调用的了,然后继续执行,发现这个方法是比对密码的
-
发现是加密后的数据库密码前缀代表了加密类型方式
支持的加密类型: -
到此获取到了加密方式,继续下一步
-
发现是把登录接口入参的账号给加密了,然后判断加密后的密码和数据库表的密码是否一致
这个加密逻辑很复杂,就是把密码加密
-
这是错误的密码,生成的密文不一致
-
使用正确的密码调用登录接口,生成的密文一致