Browse Source

密码验证

git-svn-id: https://192.168.57.71/svn/jsgkj@113 931142cf-59ea-a443-aa0e-51397b428577
ld_liufl 9 years ago
parent
commit
d301c87800

+ 2 - 0
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/common/util/Constants.as

@@ -240,6 +240,8 @@ package com.jtgh.yjpt.common.util
 		public static var GROUP_CODE_BWYT:String="BWYT";
 		/**各地市港口局*/
 		public static var GROUP_CODE_SZDGKJ:String="SZDGKJ";
+		/**作业场所类型 */
+		public static var	GROUP_CODE_ZYCS:String = "ZYCS";
 
 		/**权力阳光*/
 		public static var GROUP_CODE_SUPERVISE:String="SUPERVISE";

+ 1 - 1
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/model/SystemModel.as

@@ -185,7 +185,7 @@ package com.jtgh.yjpt.model
 				Global.selectedSecondMenuVo=Global.initMenu;
 				menuClick(Global.initMenu);
 			}
-			if(!Global.user.pdsfyx){
+			if(Global.user.pdwx){
 				thisModel.mainLayout.addEventListener(FlexEvent.CREATION_COMPLETE,function(e:Event):void{		
 					var yxq:PassWordYxq= new PassWordYxq;
 					Utils.popupWindow(ResourceManager.getInstance().getString("common","tip"),yxq,FlexGlobals.topLevelApplication as DisplayObject,null,300,150);

+ 4 - 6
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/view/core/PassWordYxq.mxml

@@ -3,7 +3,7 @@
 		 xmlns:s="library://ns.adobe.com/flex/spark" 
 		 xmlns:mx="library://ns.adobe.com/flex/mx" 
 		 creationComplete="creationCompleteHandler(event)"
-		 width="300" height="150">
+		 width="100%" height="100%">
 	<fx:Script>
 		<![CDATA[
 			import com.jtgh.yjpt.common.Global;
@@ -16,9 +16,6 @@
 			public var thisView:PassWordYxq;
 			protected function creationCompleteHandler(event:FlexEvent):void
 			{
-				var arr:Array = new Array();
-				arr.push(Global.user.pdyxqStr);
-				tx.text=ResourceManager.getInstance().getString('common','password.yxq',arr);				
 			}
 			
 			protected function doChange(event:MouseEvent):void{
@@ -37,8 +34,9 @@
 			
 		]]>
 	</fx:Script>
-	<s:VGroup width="100%" height="100%" horizontalAlign="center" verticalAlign="middle" top="10" bottom="10" gap="15">
-		<s:Label id="tx"  width="100%" />
+	<s:VGroup width="100%" height="100%" horizontalAlign="center" verticalAlign="middle" top="10" bottom="10" >
+		<s:Label id="tx" text="{'     '+resourceManager.getString('common','password.yxq')}"  width="100%" />
+		<s:Group height="100%"/>
 		<s:HGroup width="100%" height="40" horizontalAlign="center">
 			<s:Button id="saveBtn" label="修改" click="doChange(event)" enabled="true" skinClass="skins.cus.ButtonSkin"/>
 			<s:Button id="closeBtn" label="{resourceManager.getString('common','btn.close')}" click="doClose(event)"  skinClass="skins.cus.ButtonSkin"/>

+ 7 - 20
gkaq/yjpt-flex/trunk/src/com/jtgh/yjpt/vo/access/UserVo.as

@@ -61,8 +61,12 @@ package com.jtgh.yjpt.vo.access
 		public var  jsdw:JsfxxwhVo;
 		/**是否船代*/
 		public var sfcd:String=YesNoSelect.NO;
-		/** 密码有效期*/
-		public var pdyxq:Date;
+		/**密码是否有效*/
+		public var pdsfyx:String=YesNoSelect.YES;
+		
+		public function get pdwx():Boolean{
+			return pdsfyx== YesNoSelect.NO;
+		}
 
 		public function get yxdl():Boolean
 		{
@@ -204,24 +208,7 @@ package com.jtgh.yjpt.vo.access
 			{
 				sfcd = YesNoSelect.NO;
 			}
-		}
-		
-		/** 密码是否有效*/
-		public function get pdsfyx():Boolean{
-			if(pdyxq==null){
-				return true;
-			}		
-			return false;
-		}
-		public function  get pdyxqStr():String{
-			var  forString:String="YYYY-MM-DD";
-			var format:DateFormatter=new DateFormatter();
-			format.formatString=forString;
-			if(null!=pdyxq)
-				return format.format(pdyxq);
-			return "";	
-		}
-						
+		}		
 
 	}
 }

+ 5 - 2
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/Constants.java

@@ -268,7 +268,7 @@ public class Constants {
 	/**
 	 * 密码有效期
 	 */
-	public  static  int PASSWORD_YXQ=7;
+	public  static  String  PASSWORD_YXQ="20161001";
 	/**
 	 * 菜单类型
 	 * <p>
@@ -838,7 +838,10 @@ public class Constants {
 	 * 密钥
 	 */
 	public final static String YJPT_GKJ = "yjpt_gkj";
-
+	/**
+	 * 
+	 */
+	public final static String PASSWORD_REGEX="^(?=.*?[a-zA-Z])(?=.*?\\d)(?=.*?[-`=\\\\\\[\\];',.\\/~!@#$%^&*()_+|{}:<>\"]).{8,}$";
 	// ************************功能模块********************************************
 	/**
 	 * 经营人

+ 1 - 1
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/GlobalData.java

@@ -177,7 +177,7 @@ public class GlobalData {
 		}
 		prop = String.valueOf(p.get("password.yxq"));
 		if(StringUtils.hasLength(prop)) {
-			Utils.setField(null, Integer.parseInt(prop), "PASSWORD_YXQ", Constants.class);
+			Utils.setField(null, prop, "PASSWORD_YXQ", Constants.class);
 		}
 		
 	}

+ 15 - 0
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/common/Utils.java

@@ -18,6 +18,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.ResourceBundle;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
@@ -735,4 +737,17 @@ public abstract class Utils {
 		t.printStackTrace(new PrintWriter(sw));
 		return sw.toString();
 	}
+	
+	/**
+	 * 判断字符是否满足某个正则表达式
+	 * @param pwd
+	 * @param regex
+	 * @return
+	 */
+	public static Boolean pwdHas(String pwd, String regex)
+	{
+		Pattern p = Pattern.compile(regex);  	  
+		Matcher m = p.matcher(pwd);  
+		return m.find();
+	}
 }

+ 14 - 7
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/controller/auth/AuthenticateController.java

@@ -10,6 +10,8 @@ import java.net.URLEncoder;
 import java.security.SecureRandom;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -354,13 +356,19 @@ public class AuthenticateController extends BaseController {
 		}
 		UserEntity user = authenticateService.doLogin(usercode, password);
 		if (null != user) {
-			if(user.getPdyxq()!=null) {
-				Date yxq =Utils.getDateLastTime( user.getPdyxq());
-				if(yxq.compareTo(new Date())<=0) {
+			Pattern p = Pattern.compile(Constants.PASSWORD_REGEX);  	  
+			Matcher m = p.matcher(password);  
+			SimpleDateFormat s = new SimpleDateFormat("yyyyMMdd");		
+			try {
+				Date yxq = Utils.getDateLastTime(s.parse(Constants.PASSWORD_YXQ));
+				//密码复杂度不够并且超出有效期外
+				if(!m.find()&&yxq.compareTo(new Date())<=0) {
 					bc.addMsg("loginPasswordError", "common", MsgLevel.ERROR);
-					return bc; 
+					return bc; 	
 				}
-			}	 
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}	
 			processLogin(bc, user);			
 		} else {
 			bc.addMsg("loginError", "common", MsgLevel.ERROR);
@@ -440,7 +448,7 @@ public class AuthenticateController extends BaseController {
 	public BusinessContext changePwd(String userCode, String oldPwd,
 			String newPwd, Boolean changeByAdmin) {
 		BusinessContext bc = createBusinessContext();
-		Pattern p = Pattern.compile("^(?=.*?[a-zA-Z])(?=.*?\\d)(?=.*?[-`=\\\\\\[\\];',.\\/~!@#$%^&*()_+|{}:<>\"]).{8,}$");  	  
+		Pattern p = Pattern.compile(Constants.PASSWORD_REGEX);  	  
 		Matcher m = p.matcher(newPwd);  
 		if(!m.find()) {
 			bc.addMsg("changePwd.changePwd.errStylepwd", "common", MsgLevel.ERROR);
@@ -451,7 +459,6 @@ public class AuthenticateController extends BaseController {
 			UserEntity user = l.get(0);
 			if (changeByAdmin || user.getPassword() != null
 					&& user.getPassword().equals(Utils.encrypt(oldPwd))) {
-				user.setPdyxq(null);
 				user.setPassword(Utils.encrypt(newPwd));
 				userService.save(user);
 			} else {

+ 9 - 7
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/entity/auth/UserEntity.java

@@ -135,8 +135,8 @@ public class UserEntity extends BaseEntity<Long> {
 	/** 是否船代 **/
 	private String sfcd = null;
 	
-	/**密码有效*/
-	private Date pdyxq;
+	/**密码是否有效*/
+	private String pdsfyx ;
 
 	public String getBgdz() {
 		return bgdz;
@@ -384,13 +384,15 @@ public class UserEntity extends BaseEntity<Long> {
 	public void setSfcd(String sfcd) {
 		this.sfcd = sfcd;
 	}
-
-	public Date getPdyxq() {
-		return pdyxq;
+	
+	@Transient
+	public String getPdsfyx() {
+		return pdsfyx;
 	}
 
-	public void setPdyxq(Date pdyxq) {
-		this.pdyxq = pdyxq;
+	public void setPdsfyx(String pdsfyx) {
+		this.pdsfyx = pdsfyx;
 	}
 
+
 }

+ 5 - 14
gkaq/yjpt-java/trunk/java_src/com/jtgh/yjpt/service/impl/auth/AuthenticateServiceImpl.java

@@ -1,8 +1,6 @@
 package com.jtgh.yjpt.service.impl.auth;
 
 import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -47,17 +45,6 @@ public class AuthenticateServiceImpl implements AuthenticateService {
 					&& Utils.pwdEquals(password, user.getPassword())) {
 				// HttpSession session =
 				// FlexContext.getHttpRequest().getSession();
-				if(user.getPdyxq()==null) {
-					Pattern p = Pattern.compile("^(?=.*?[a-zA-Z])(?=.*?\\d)(?=.*?[-`=\\\\\\[\\];',.\\/~!@#$%^&*()_+|{}:<>\"]).{8,}$");  	  
-					Matcher m = p.matcher(password);  
-					if(!m.find()) {
-					   Calendar nowtime= Calendar.getInstance();
-					   nowtime.setTime(new Date());
-					   nowtime.add(Calendar.DAY_OF_MONTH, Constants.PASSWORD_YXQ);
-					   user.setPdyxq(nowtime.getTime());
-					   user = userDao.save(user);
-					}
-				} 
 				HttpSession session = Utils.getSession();
 				if (user.getJyrjcxx() != null) {
 					user.getJyrjcxx().getGkjyr();
@@ -68,7 +55,11 @@ public class AuthenticateServiceImpl implements AuthenticateService {
 					user.getAddUser().getCode();
 				if (user.getUpdateUser() != null)
 					user.getUpdateUser().getCode();
-
+				Pattern p = Pattern.compile(Constants.PASSWORD_REGEX);  	  
+				Matcher m = p.matcher(password);  
+				if(!m.find()){
+					user.setPdsfyx(Constants.NO);
+				}
 				session.setAttribute(GlobalData.USER_SESSION_KEY, user);
 				return user;
 			}

+ 1 - 1
gkaq/yjpt-java/trunk/locale/zh_CN/common.properties

@@ -205,7 +205,7 @@ logoutConfirmTitle=\u767b\u51fa\u7cfb\u7edf
 otherConfirm=\u786e\u8ba4\u64cd\u4f5c\uff1f
 otherConfirmTitle=\u786e\u8ba4\u4fe1\u606f
 
-password.yxq=\u60a8\u5f53\u524d\u5bc6\u7801\u4e0d\u6ee1\u8db3\u590d\u6742\u5ea6\u8981\u6c42\uff088\u4f4d\u53ca\u4ee5\u4e0a\u5e76\u5305\u62ec\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u5b57\u7b26\uff09\uff0c\u5f53\u524d\u5bc6\u7801\u8fd8\u53ef\u4ee5\u7ee7\u7eed\u4f7f\u7528\u81f3{0}\uff0c\u5efa\u8bae\u60a8\u7acb\u5373\u4fee\u6539\u5bc6\u7801\uff01
+password.yxq= \u60a8\u5f53\u524d\u5bc6\u7801\u4e0d\u6ee1\u8db3\u590d\u6742\u5ea6\u8981\u6c42\uff088\u4f4d\u53ca\u4ee5\u4e0a\u5e76\u5305\u62ec\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u5b57\u7b26\uff09\uff0c\u5f53\u524d\u5bc6\u7801\u8fd8\u53ef\u4ee5\u7ee7\u7eed\u4f7f\u7528\u81f32016-10-01\uff0c\u5efa\u8bae\u60a8\u7acb\u5373\u4fee\u6539\u5bc6\u7801\uff01
 session.timeout=\u4f1a\u8bdd\u8d85\u65f6\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\uff01
 systemError=\u7cfb\u7edf\u9519\u8bef
 systemTip=\u7cfb\u7edf\u63d0\u793a