SpringBoot中Shiro的应用

为什么使用Shiro,使用Shiro主要做什么事情

1)用户登录时,进行用户名密码校验;
2)用户登录后,收到请求时做Token的校验,这里用到JWT Token认证;
3)校验用户权限

遇到的问题

#1. Odd number of characters

集成完Shiro后遇到报错:
Odd number of characters.
SpringBoot中Shiro的应用
错误内容大概是在说,加密部分出现了问题,字符不合法,出现奇数个字符。
解决办法:
将用户密码经过MD5加密后存储,再读取出来解析获取token,主要原因是在Realm中,重写doGetAuthenticationInfo方法时,返回的对象中
return new SimpleAuthenticationInfo(adminUser, adminUser.getPassword(), ByteSource.Util.bytes(encryptSalt), "dbRealm");
保证传入的password是经过加密的,就不会报这个错误。

2. 密码校验不一致(提交的凭据与预期的凭据不匹配)

Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - 1, rememberMe=false] did not match the expected credentials.
原因有好多种,最常见的原因是,存入数据库时password的加密方式与当前获取到的密码加密方式不一致导致,解决方案:
核对当前password的加密方式(⚠️注意是在从前端获取到password后,传入UsernamePasswordToken之前,一定要保证在传入UsernamePasswordToken之前按照存入数据库的加密方式加密,切勿添加其他加密方式)