summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangxin <[email protected]>2018-12-14 19:09:57 +0600
committerwangxin <[email protected]>2018-12-14 19:09:57 +0600
commitf1fe4e78ba7c1267a5167bed7602f5d50f3ecf9a (patch)
treefc848192db7722c74b893f9262c9aedb10977716
parent68d45f9dd9870905c8a6846ed39a22a01f2b5af5 (diff)
(1)修复新增自定义app修改报错的bug
(2)修复用户修改自己密码之后无法登陆的bug
-rw-r--r--src/main/java/com/nis/web/controller/specific/SpecificServiceCfgController.java3
-rw-r--r--src/main/java/com/nis/web/controller/sys/UserController.java14
-rw-r--r--src/main/java/com/nis/web/service/SystemService.java21
-rw-r--r--src/main/webapp/WEB-INF/views/sys/tagTreeselect.jsp13
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;
});
}