您的位置:首页 > 其它

Shiro Odd number of characters.

2017-11-17 11:33 761 查看
这几天在集成Shiro,从网上找了代码,自己参考着写自己的Demo的。

参照着他的代码,mybatis部分没有集成,自己返回的固定数据,执行登录的时候出现以下问题。

Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=false].  Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).

java.lang.IllegalArgumentException: Odd number of characters.


网上搜了下,这个问题出现的很多,基本都是说加密这块出了问题。最终还是仔细阅读那位兄弟代码的时候发现有个password加密的部分。而且也提供了相应的加密。

首先,我这里进入Shiro的时候会执行doGetAuthenticationInfo方法,这里会使用hashedCredentialsMatcher对密码进行加密,仔细对比后确定问题就出在这,所以讲自己返回的数据中的密码进行如下加密后测试OK了。

public class PasswordHelper {

private String algorithmName = "md5";
private int hashIterations = 2;

public void encryptPassword(User user) {
//String salt=randomNumberGenerator.nextBytes().toHex();
String newPassword = new SimpleHash(algorithmName, user.getPassword(),  ByteSource.Util.bytes(user.getUsername()), hashIterations).toHex();
//String newPassword = new SimpleHash(algorithmName, user.getPassword()).toHex();
user.setPassword(newPassword);

}
public static void main(String[] args) {
PasswordHelper passwordHelper = new PasswordHelper();
User user = new User();
user.setUsername("admin");
user.setPassword("admin");
passwordHelper.encryptPassword(user);
System.out.println(user);
}


这里的hashIterations次数要跟hashedCredentialsMatcher方法设置中的次数相同,加密方式也要相同(一般MD5足够了)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐