diff --git a/src/main/java/com/smallchill/core/shiro/ShiroKit.java b/src/main/java/com/smallchill/core/shiro/ShiroKit.java index 0558548bf7e4ef0a9683985848c1899b88562018..97373c7791700a55e9a069c6ff4f0b4c24bcbd1c 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 761b44165e849c1c58ead68f1dd03db0b133d703..e146fb900cf2b613b1d8ca72c2aa3ed7933a929c 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);