Source/Client/PLTClient/src/com/vci/client/logon/base/LogonHandler.java
@@ -22,6 +22,7 @@
import com.vci.client.framework.util.RightControlUtil;
import com.vci.client.ui.exception.VCIException;
import com.vci.client.ui.locale.LocaleDisplay;
import com.vci.client.ui.swing.VCIOptionPane;
import com.vci.corba.common.VCIError;
import com.vci.corba.framework.data.DataSourceInfo;
import com.vci.mw.ClientContextVariable;
@@ -239,24 +240,6 @@
         return res;
      }
      
      int actualType = 0;
      int mimacelue = pwdStgObj.getRequiredType();
      //判断密码属于哪种密码策略
      CombinationObject[] combinationObjs = rmcd.fetchCombinationsByPstId(pwdStgObj.getId());
      for (CombinationObject combObj : combinationObjs){
         List<String> list = new ArrayList<String>();
         CombinationValueObject[] combValObj = rmcd.fetchCombinationValuesByParentId(combObj.getId());
         for (CombinationValueObject obj : combValObj){
            list.add(obj.getValue());
         }
         for (int i = 0 ; i < userObj.getPwd().length() ;i ++){
            String a = ""+userObj.getPwd().charAt(i);
            if (list.contains(a)){
               actualType +=1 ;
               break;
            }
         }
      }
      
      if (!("".equals(pwdStgObj.getId()))) {// 密码策略是否为空
         defaultWrongNum = pwdStgObj.getRetryTime(); // 获取密码策略规定的错误登录次数
@@ -264,6 +247,57 @@
         dafaultOverdueDay = pwdStgObj.getOverdueDay(); // 获取密码规则的过期天数
         dafaultRemideDay = pwdStgObj.getRemideDay(); // 获取密码策略规定的密码快过期提醒天数(提前xx天开始提醒该修改密码)
      }
      String password = userObj.getPwd();
      int requiredType = pwdStgObj.getRequiredType(); // 必填种类
      int containsTypes = pwdStgObj.getCharTypes();// 包含字符类型
      //判断密码属于哪种密码策略
//      CombinationObject[] combinationObjs = rmcd.fetchCombinationsByPstId(pwdStgObj.getId());
//      for (CombinationObject combObj : combinationObjs){
//         List<String> list = new ArrayList<String>();
//         CombinationValueObject[] combValObj = rmcd.fetchCombinationValuesByParentId(combObj.getId());
//         for (CombinationValueObject obj : combValObj){
//            list.add(obj.getValue());
//         }
//         for (int i = 0 ; i < userObj.getPwd().length() ;i ++){
//            String a = ""+userObj.getPwd().charAt(i);
//            if (list.contains(a)){
//               actualType +=1 ;
//               break;
//            }
//         }
//      }
      int actualTypes = 0;
      int typeCount = 0;
      {
            String symbol = "[ _`~!@#$%^&*()-+={[}]|\\'\":;,.<>/?";
         for (int i = 0 ; i < password.length() ;i ++){
            char c = password.charAt(i);
            if (Character.isDigit(c))
               actualTypes |= 0x01;
            else if (Character.isLowerCase(c))
               actualTypes |= 0x02;
            else if (Character.isUpperCase(c))
               actualTypes |= 0x04;
            else if (symbol.indexOf(c) > -1)
               actualTypes |= 0x08;
         }
         for (int i = 0; i < 4; i++) {
            int type = (int)Math.pow(2, i);
            if ((actualTypes & type) == type)
               typeCount++;
         }
         if ((actualTypes & containsTypes) != actualTypes || typeCount < requiredType){
            res.setOtherMessage(getThisI18n("userPwdStagIsUpdatePleaseChange"));
            res.setNeedChangePassword(true);
         }
      }
      
      long pwdUpdateTime = userObj.getPwdUpdateTime();
      long systemTime = rmcd.getSystemTime();
@@ -277,7 +311,8 @@
         // 您的密码已经过期,请进行修改!
         res.setOtherMessage(getThisI18n("userPwdIsExpiredPleaseChange"));
         res.setNeedChangePassword(true);
      } else if (actualType < mimacelue) {
      //} else if (actualType < mimacelue) {
      } else if ((actualTypes & containsTypes) != actualTypes || typeCount < requiredType){
         // 您的密码策略已经修改,需要修改密码才能进行其它操作!
         res.setOtherMessage(getThisI18n("userPwdStagIsUpdatePleaseChange"));
         res.setNeedChangePassword(true);