Pārlūkot izejas kodu

修改密码后更新缓存

蔡德晨 5 gadi atpakaļ
vecāks
revīzija
49aa708b77

+ 13 - 0
src/main/java/com/jeeplus/modules/sys/web/UserController.java

@@ -20,6 +20,7 @@ import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.Role;
 import com.jeeplus.modules.sys.entity.SystemConfig;
 import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.security.SystemAuthorizingRealm;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.service.SystemConfigService;
 import com.jeeplus.modules.sys.service.SystemService;
@@ -35,6 +36,9 @@ import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.apache.shiro.subject.PrincipalCollection;
+import org.apache.shiro.subject.SimplePrincipalCollection;
+import org.apache.shiro.subject.Subject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -845,6 +849,15 @@ public class UserController extends BaseController {
             if("home".equals(request.getParameter("home"))){
 //                model.addAttribute("message", "修改密码成功,请重新登录");
 //                SecurityUtils.getSubject().logout();
+
+                Subject subject = SecurityUtils.getSubject();
+                SystemAuthorizingRealm.Principal principal = (SystemAuthorizingRealm.Principal) subject.getPrincipal();
+                PrincipalCollection principalCollection = subject.getPrincipals();
+                principal.setFirstFlag(false);
+                String realmName = principalCollection.getRealmNames().iterator().next();
+                PrincipalCollection newPrincipalCollection =
+                        new SimplePrincipalCollection(principal, realmName);
+                subject.runAs(newPrincipalCollection);
                 return  "redirect:/a/home";
             }
             return "modules/sys/userInfo";