我们知道ruoyi密码传输和前后端交互都是明文,这样显然不是很安全
由此,我们可以去设计AES加密去验证用户合法性
public boolean matches(SysUser user, String rawPassword)
{
// return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
try {
return SecurityUtils.matchesPasswordAES(rawPassword,user.getPassword());
} catch (Exception e) {
log.error("load password error {}",e);
return false;
}
}
加密的Encoder
public static boolean matches(CharSequence rawPassword, String encodedPassword) throws Exception{
if (rawPassword == null) {
throw new IllegalArgumentException("rawPassword cannot be null");
} else if (encodedPassword != null && encodedPassword.length() != 0) {
String realPass = AES256Util.decode(SecurityConstants.AES_STR,rawPassword.toString());
String Pass = AES256Util.decode(SecurityConstants.AES_STR,encodedPassword.toString());
return StringUtils.equals(realPass,Pass);
}
return false;
}
然后去比对数据库加密盐和网关获取的加密盐是否一致即可
提高了系统的安全性,实际上,登录请求加密方式多种多样,AES,RSA,更好的方式可以使用国密算法生成密钥
我们来验证下登录
成功登录!