diff options
| author | wangxin <[email protected]> | 2018-12-15 23:04:43 +0600 |
|---|---|---|
| committer | wangxin <[email protected]> | 2018-12-15 23:04:43 +0600 |
| commit | 33dd90efd292445521612d3f020e20719c3f470e (patch) | |
| tree | e9883cfb62382d551f2b0ca9822c28cf89832fcf | |
| parent | 0b3d598c3978b214d9840c862572640c49fa91f6 (diff) | |
修改用户密码的方法调整
| -rw-r--r-- | src/main/java/com/nis/web/controller/sys/UserController.java | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/src/main/java/com/nis/web/controller/sys/UserController.java b/src/main/java/com/nis/web/controller/sys/UserController.java index c904daa..a478ef1 100644 --- a/src/main/java/com/nis/web/controller/sys/UserController.java +++ b/src/main/java/com/nis/web/controller/sys/UserController.java @@ -42,6 +42,7 @@ import com.nis.util.StringUtils; import com.nis.util.excel.ExportExcel; import com.nis.web.controller.BaseController; import com.nis.web.security.SystemAuthorizingRealm; +import com.nis.web.security.SystemAuthorizingRealm.Principal; import com.nis.web.security.UserUtils; import com.nis.web.security.UsernamePasswordToken; @@ -281,6 +282,7 @@ public class UserController extends BaseController{ /** * 修改个人用户密码 + * * @param oldPassword * @param newPassword * @param model @@ -290,25 +292,37 @@ public class UserController extends BaseController{ @RequestMapping(value = "modifyPwd") public String modifyPwd(String oldPassword, String newPassword, Model model) { SysUser user = UserUtils.getUser(); - if (StringUtils.isNotBlank(oldPassword) && StringUtils.isNotBlank(newPassword)){ - - if (StringUtils.validatePassword(oldPassword, user.getPassword())){ + if (StringUtils.isNotBlank(oldPassword) && StringUtils.isNotBlank(newPassword)) { + if (StringUtils.validatePassword(oldPassword, user.getPassword())) { userService.updatePasswordById(user.getId(), user.getLoginId(), newPassword); - RealmSecurityManager securityManager = - (RealmSecurityManager) SecurityUtils.getSecurityManager(); - Collection<Realm> realm=securityManager.getRealms(); - for (Realm realm2 : realm) { - SystemAuthorizingRealm userRealm = (SystemAuthorizingRealm) realm2; - RedisCache<Object, AuthenticationInfo> cache= (RedisCache<Object, AuthenticationInfo>) userRealm.getAuthenticationCache(); - String keyPrefix=cache.getKeyPrefix(); - for (AuthenticationInfo auth : cache.values()) { - userRealm.getAuthenticationCache().remove(auth.getPrincipals().getPrimaryPrincipal()); + Session curSession = UserUtils.getSession();// 当前登录用户的session + Principal principal = UserUtils.getPrincipal();// 当前登录用户的鉴权信息 + // 过滤 当前用户的 非此客户的其它登录信息 + Collection<Session> allOtherSession = systemService.getActiveSessions(true, principal, curSession); + if (allOtherSession.size() > 0) { + // 如果是登录进来的,则踢出已在线用户 + if (UserUtils.getSubject().isAuthenticated()) { + for (Session session : allOtherSession) { + systemService.deleteSession(session); } - systemService.deleteAuthenticationCache(keyPrefix+user.getName()); - systemService.deleteAuthenticationCache(keyPrefix+user.getId()); - } + } + } + + RealmSecurityManager securityManager = (RealmSecurityManager) SecurityUtils.getSecurityManager(); + Collection<Realm> realm = securityManager.getRealms(); + for (Realm realm2 : realm) { + SystemAuthorizingRealm userRealm = (SystemAuthorizingRealm) realm2; + RedisCache<Object, AuthenticationInfo> cache = (RedisCache<Object, AuthenticationInfo>) userRealm.getAuthenticationCache(); + String keyPrefix = cache.getKeyPrefix(); + for (AuthenticationInfo auth : cache.values()) { + userRealm.getAuthenticationCache().remove(auth.getPrincipals().getPrimaryPrincipal()); + } + systemService.deleteAuthenticationCache(keyPrefix + user.getName()); + systemService.deleteAuthenticationCache(keyPrefix + user.getId()); + } + model.addAttribute("message", "update_success"); - }else{ + } else { model.addAttribute("message", "update_failed"); } } |
