shiro身份认证失败:org.apache.shiro.authc.IncorrectCredentialsException

最近整个shiro项目的时候,发现一个小bug,在登录的时候,当用户名对,密码错的时候,本应提示用户名或密码错误的,但提示信息却是身份认证失败的异常信息,项目后台窗口报错

org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.shiro.authc.UsernamePasswordToken - zhangsan, rememberMe=true] did not match the expected credentials.

通过debug查看到源代码之后,发现org.apache.shiro.realm.AuthenticatingRealm整个流程:
在SimpleCredentialsMatcher这个类的doCredentialsMatch方法中,分别将待认证的密码以及数据库中的正确密码分别从token和info中取出,再判断二者是否一样,如果不一样就返回false,最后在AuthenticatingRealm这个类的assertCredentialsMatch方法中抛出IncorrectCredentialsException异常。所以不是身份认证的原因,归根到底是密码错的原因,经过多次验证,我很确定经过MD5加盐加密的密码没有错啊,那是能使格式错了,,,,,
在这里插入图片描述
又经过多次尝试,发现token和info不一样,一个是32位的string形式的,一个是char的形式,然后我将密码先设置为char再转为string之后,终于成功了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/iijik55/article/details/124345729