1:问题原因
在登录验证时自定义Realm中SimpleAuthenticationInfo中放的是USER实体
导致退出登录是,Reids登录认证没有清除,有脏数据
2:解决方法
在自定义realm中重写两个(登录认证和权限)方法,我这里都重写了
/**
* 重写此方法,得到用户名缓存Key
*/
@Override
protected Object getAuthorizationCacheKey(PrincipalCollection principals) {
SysUser user = (SysUser) principals.getPrimaryPrincipal();
return user.getLoginName();
}
/**
* 重写此方法,得到用户名缓存Key
*/
@Override
protected Object getAuthenticationCacheKey(PrincipalCollection principals) {
SysUser user = (SysUser) principals.getPrimaryPrincipal();
return user.getLoginName();
}
3:OK,退出时 ,认证和登录缓存都清理成功
SecurityUtils.getSubject().logout()