diff options
| author | wangxin <[email protected]> | 2018-12-14 19:09:57 +0600 |
|---|---|---|
| committer | wangxin <[email protected]> | 2018-12-14 19:09:57 +0600 |
| commit | f1fe4e78ba7c1267a5167bed7602f5d50f3ecf9a (patch) | |
| tree | fc848192db7722c74b893f9262c9aedb10977716 | |
| parent | 68d45f9dd9870905c8a6846ed39a22a01f2b5af5 (diff) | |
(1)修复新增自定义app修改报错的bug
(2)修复用户修改自己密码之后无法登陆的bug
4 files changed, 45 insertions, 6 deletions
diff --git a/src/main/java/com/nis/web/controller/specific/SpecificServiceCfgController.java b/src/main/java/com/nis/web/controller/specific/SpecificServiceCfgController.java index e897fac..70acffb 100644 --- a/src/main/java/com/nis/web/controller/specific/SpecificServiceCfgController.java +++ b/src/main/java/com/nis/web/controller/specific/SpecificServiceCfgController.java @@ -29,6 +29,7 @@ import com.nis.util.Constants; import com.nis.util.DictUtils; import com.nis.util.StringUtils; import com.nis.web.controller.BaseController; +import com.nis.web.security.UserUtils; @Controller @RequestMapping(value = "${adminPath}/specific/specificServiceCfg") @@ -462,7 +463,9 @@ public class SpecificServiceCfgController extends BaseController { map.put("name",cfg.getSpecServiceName()); map.put("serviceType",cfg.getCfgType()); map.put("businessType",cfg.getBusinessType()); + map.put("serviceCode",cfg.getSpecServiceCode()); map.put("groupId",cfg.getGroupId()); + map.put("addFlag",UserUtils.getUser().getId()); return map; }catch (Exception e) { e.printStackTrace(); 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 27e4a68..c904daa 100644 --- a/src/main/java/com/nis/web/controller/sys/UserController.java +++ b/src/main/java/com/nis/web/controller/sys/UserController.java @@ -20,6 +20,7 @@ import org.apache.shiro.session.Session; import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection; import org.apache.shiro.subject.support.DefaultSubjectContext; +import org.crazycake.shiro.RedisCache; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -293,6 +294,19 @@ public class UserController extends BaseController{ 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()); + } + systemService.deleteAuthenticationCache(keyPrefix+user.getName()); + systemService.deleteAuthenticationCache(keyPrefix+user.getId()); + } model.addAttribute("message", "update_success"); }else{ model.addAttribute("message", "update_failed"); diff --git a/src/main/java/com/nis/web/service/SystemService.java b/src/main/java/com/nis/web/service/SystemService.java index 684f6b1..000aa8b 100644 --- a/src/main/java/com/nis/web/service/SystemService.java +++ b/src/main/java/com/nis/web/service/SystemService.java @@ -24,7 +24,12 @@ import org.apache.axis2.client.Options; import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.rpc.client.RPCServiceClient;
import org.apache.commons.io.FileUtils;
+import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.session.Session;
+import org.crazycake.shiro.exception.SerializationException;
+import org.crazycake.shiro.serializer.ObjectSerializer;
+import org.crazycake.shiro.serializer.RedisSerializer;
+import org.crazycake.shiro.serializer.StringSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -44,6 +49,8 @@ import com.nis.web.security.Servlets; import com.nis.web.security.SessionDAO;
import com.nis.web.security.UserUtils;
+import antlr.StringUtils;
+
@Service
public class SystemService extends BaseService{
@@ -59,7 +66,8 @@ public class SystemService extends BaseService{ @Autowired
private SrcIpDao srcIpDao;
-
+ private RedisSerializer keySerializer = new StringSerializer();
+ private RedisSerializer valueSerializer = new ObjectSerializer();
public Collection<Session> getActiveSessions(boolean includeLeave) {
return sessionDao.getActiveSessions(includeLeave);
@@ -74,6 +82,17 @@ public class SystemService extends BaseService{ sessionDao.delete(session);
}
+ public void deleteAuthenticationCache(String authenticationInfo) {
+ if (org.apache.commons.lang3.StringUtils.isBlank(authenticationInfo)) {
+ logger.error("AuthenticationInfo is null");
+ return;
+ }
+ try {
+ sessionDao.getRedisManager().del(keySerializer.serialize(authenticationInfo));
+ } catch (SerializationException e) {
+ logger.error("delete AuthenticationInfo error. AuthenticationInfo key=" + authenticationInfo);
+ }
+ }
public SysUser getUserByLoginName(String loginName) {
return UserUtils.getByLoginName(loginName);
diff --git a/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp b/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp index 664fbdc..b04015c 100644 --- a/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp +++ b/src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp @@ -283,8 +283,11 @@ success:function(data){ treeNode.id=data.id; treeNode.groupId=data.groupId; - treeNode.specServiceCode=data.specServiceCode; + treeNode.serviceCode=data.serviceCode; + treeNode.serviceType=data.serviceType; treeNode.user=data.addFlag; + treeNode.pId=data.pId; + treeNode.name=data.name; var zTree = $.fn.zTree.getZTreeObj("tree"); zTree.updateNode(treeNode); closeTip(); @@ -376,8 +379,7 @@ var id="manual"+new Date().getTime(); var zTree = $.fn.zTree.getZTreeObj("tree"); //addSelectedNode zTree.addNodes(treeNode, {id:id, pId:treeNode.id,parentTId:treeNode.tId, name:"<spring:message code='new' /> <spring:message code='${title}' />", - businessType:treeNode.id.replace("businessType",""),user:"${userId}",serviceType:treeNode.serviceType,groupId:"", - serviceCode:""}); + businessType:treeNode.id.replace("businessType",""),user:"${userId}",serviceType:treeNode.serviceType,groupId:"",serviceCode:""}); var node = zTree.getNodeByParam("id", id,treeNode); if(node){ zTree.updateNode(node); @@ -411,9 +413,10 @@ editBtn.bind("click", function(){ var zTree = $.fn.zTree.getZTreeObj("tree"); //替代beforeEditName - if(confirm("<spring:message code='edit' />" + treeNode.name + "?")){ + /* if(confirm("<spring:message code='edit' />" + treeNode.name + "?")){ zTree.editName(treeNode); - } + } */ + zTree.editName(treeNode); return; }); } |
