diff --git a/src/main/java/com/smallchill/core/shiro/ShiroKit.java b/src/main/java/com/smallchill/core/shiro/ShiroKit.java index 0558548b..97373c77 100644 --- a/src/main/java/com/smallchill/core/shiro/ShiroKit.java +++ b/src/main/java/com/smallchill/core/shiro/ShiroKit.java @@ -20,6 +20,7 @@ import java.util.Random; import org.apache.shiro.SecurityUtils; import org.apache.shiro.crypto.hash.Md5Hash; import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.mgt.RealmSecurityManager; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.ByteSource; @@ -268,5 +269,16 @@ public class ShiroKit { } return ""; } - + + /** + * 清理AuthenticationInfo缓存 + * 参考:http://blog.csdn.net/win7system/article/details/51038131 + * @param account + */ + public static void clearCachedAuthenticationInfo(String account) { + + RealmSecurityManager securityManager =(RealmSecurityManager) SecurityUtils.getSecurityManager(); + ShiroDbRealm userRealm = (ShiroDbRealm) securityManager.getRealms().iterator().next(); + userRealm.getCacheManager().getCache(userRealm.getAuthenticationCacheName()).remove(account); + } } diff --git a/src/main/java/com/smallchill/system/controller/UserController.java b/src/main/java/com/smallchill/system/controller/UserController.java index 761b4416..e146fb90 100644 --- a/src/main/java/com/smallchill/system/controller/UserController.java +++ b/src/main/java/com/smallchill/system/controller/UserController.java @@ -127,6 +127,7 @@ public class UserController extends BaseController implements ConstShiro{ user.setVersion(user.getVersion() + 1); boolean temp = blade.update(user); if (temp) { + ShiroKit.clearCachedAuthenticationInfo(user.getAccount()); return success(UPDATE_SUCCESS_MSG); } else { return error(UPDATE_FAIL_MSG);