您的位置:首页 > 运维架构 > Apache

shiro 使用缓存时出现:java.io.NotSerializableException: org.apache.shiro.util.SimpleByteSource

2016-08-10 23:36 621 查看
在学习Shiro使用缓存时,出现:

java.io.NotSerializableException:org.apache.shiro.util.SimpleByteSource异常,开启debug会提示:

ERROR [authentication.data] - Disk Write of test failed: 错误。

出现这种情况是因为:SimpleByteSource没有是实现Serializable接口

解决办法:自定义一个类继承SimpleByteSource实现Serializable接口

当然也可以实现ByteSource接口和Serializable接口,但是实现ByteSource接口需要实现其方法,不方便。

自定义一个MySimpleByteSource 类继承继承SimpleByteSource实现Serializable接口。

public class MySimpleByteSource extends SimpleByteSource implements Serializable {

private static final long serialVersionUID = 1L;

public MySimpleByteSource(byte[] bytes) {
super(bytes);
}
}


在自定义realm的认证方法中:

//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(
AuthenticationToken token) throws AuthenticationException {
//获得主体对象身份
String username = (String) token.getPrincipal();
//根据用户名查询用户信息
User user = userDao.queryUserByUsername(username);
if (user!=null) {
return new SimpleAuthenticationInfo(user.getUsername(), user.getPassword(), new MySimpleByteSource(user.getSalt().getBytes()), getName());
}
return null;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shiro 缓存 异常
相关文章推荐