Переглянути джерело

买卖家中心-账户管理-密码强度规则修改

liusw 8 роки тому
батько
коміт
70d54a5269

+ 10 - 9
src/main/java/com/uas/platform/b2c/common/account/controller/UserController.java

@@ -116,26 +116,27 @@ public class UserController {
 
 	/**
 	 * 修改用户密码
-	 *
-	 * @param password	用户输入密码
+	 * @param session 获取session
+	 * @param password 旧密码
+	 * @param newPassword 新密码
+	 * @param secLevel 密码强度
+	 * @return
 	 */
 	@RequestMapping(value = "/updatePassword", method = RequestMethod.POST)
-	public ResponseEntity<String> updatePassword(final HttpSession session, final String password, final String newPassword,final Short secLevel) {
+	public ResponseEntity<String> updatePassword(final HttpSession session, final String password, final String newPassword, final Short secLevel) {
 		if (password.equals(newPassword)) {
 			throw new IllegalOperatorException("新密码与旧密码相同");
 		}
-		if(newPassword.length()<8 || newPassword.matches("^[0-9]*$") || newPassword.matches("^[A-Za-z]*$")){
-			throw new IllegalOperatorException("密码强度不够,请重新输入");
-		}
-		if(newPassword.length()>20){
-			throw new IllegalOperatorException("密码超过20位,请重新输入");
+		String middlLevelReg = "^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$";
+		if (!newPassword.matches(middlLevelReg)) {
+			throw new IllegalOperatorException("密码格式有误,请重新输入");
 		}
 		User sysUser = SystemSession.getUser();
 		User user = userService.findUserPwdByUserUU(sysUser.getUserUU());
 		if (!StringUtils.isEmpty(newPassword)) {
 			user.setPwdSecLevel(secLevel);
 			user = userService.updatePassword(user, password, newPassword);
-			if(sysUser.getEnterprise()!=null){
+			if (sysUser.getEnterprise() != null) {
 				user.setCurrentEnterprise(sysUser.getEnterprise().getUu());
 			}
 			session.setAttribute("user", user);

+ 13 - 15
src/main/webapp/resources/js/usercenter/controllers/forstore/account_manager_ctrl.js

@@ -671,12 +671,12 @@ define(['app/app'], function (app) {
             });
           };
 
-          //对新密码进行校验
+          // 对新密码进行校验
           $scope.checkSuccess1 = false;
           $scope.checkFailed1 = false;
           $scope.checkNewPassword = function (newPassword) {
-            var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/;
-            if (newPassword == null || !reg.test(newPassword)) {
+            var middlLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$/;
+            if (newPassword == null || !middlLevelReg.test(newPassword)) {
               //toaster.pop('error', '错误', '密码为8-20字符的英文、数字混合');
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
@@ -691,7 +691,7 @@ define(['app/app'], function (app) {
             $scope.checkPasswordLevel(newValue);
           });
 
-          //密码强度校验
+          // 密码强度校验
           $scope.secLevel = 0;
           $scope.checkPasswordLevel = function (newPassword) {
             $scope.checkFailed1 = false;
@@ -699,20 +699,18 @@ define(['app/app'], function (app) {
               $scope.secLevel = 0;
               return false;
             }
-            //不足8位,或仅有数字,或仅有英文
-            if (newPassword.length < 8 || /^[0-9]*$/.test(newPassword)
-                || /^[A-Za-z]*$/.test(newPassword)) {
-              $scope.secLevel = 1;
+            // 密码强度中的正则
+            var middlLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$/;
+            // 密码强度高的正则
+            var heightLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]))|((?=.*[0-9])((?=.*[a-zA-Z]))(?=.*[^a-zA-Z0-9]))).*$/;
+            if(heightLevelReg.test(newPassword)){
+              $scope.secLevel = 3;
               return false;
-            }
-            if (/^[A-Z0-9]{8,20}$/.test(newPassword) || /^[a-z0-9]{8,20}$/.test(
-                    newPassword)) {//达到8位,且 仅有数字+英文小写 或 仅有数字+英文大写
+            }else if(middlLevelReg.test(newPassword)){
               $scope.secLevel = 2;
               return false;
-            }
-            if (/^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,20}$/.test(
-                    newPassword)) {
-              $scope.secLevel = 3;
+            }else{
+              $scope.secLevel = 1;
               return false;
             }
           }

+ 13 - 15
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_account_management_ctrl.js

@@ -592,12 +592,12 @@ define(['app/app'], function(app) {
             });
           };
 
-          //对新密码进行校验
+          // 对新密码进行校验
           $scope.checkSuccess1 = false;
           $scope.checkFailed1 = false;
           $scope.checkNewPassword = function (newPassword) {
-            var reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/;
-            if (newPassword == null || !reg.test(newPassword)) {
+            var middlLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$/;
+            if (newPassword == null || !middlLevelReg.test(newPassword)) {
               //toaster.pop('error', '错误', '密码为8-20字符的英文、数字混合');
               $scope.checkSuccess1 = false;
               $scope.checkFailed1 = true;
@@ -612,7 +612,7 @@ define(['app/app'], function(app) {
             $scope.checkPasswordLevel(newValue);
           });
 
-          //密码强度校验
+          // 密码强度校验
           $scope.secLevel = 0;
           $scope.checkPasswordLevel = function (newPassword) {
             $scope.checkFailed1 = false;
@@ -620,20 +620,18 @@ define(['app/app'], function(app) {
               $scope.secLevel = 0;
               return false;
             }
-            //不足8位,或仅有数字,或仅有英文
-            if (newPassword.length < 8 || /^[0-9]*$/.test(newPassword)
-                || /^[A-Za-z]*$/.test(newPassword)) {
-              $scope.secLevel = 1;
+            // 密码强度中的正则
+            var middlLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z]))|((?=.*[0-9])(?=.*[A-Z]))).*$/;
+            // 密码强度高的正则
+            var heightLevelReg = /^(?=.{8,20})(((?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]))|((?=.*[0-9])((?=.*[a-zA-Z]))(?=.*[^a-zA-Z0-9]))).*$/;
+            if(heightLevelReg.test(newPassword)){
+              $scope.secLevel = 3;
               return false;
-            }
-            if (/^[A-Z0-9]{8,20}$/.test(newPassword) || /^[a-z0-9]{8,20}$/.test(
-                    newPassword)) {//达到8位,且 仅有数字+英文小写 或 仅有数字+英文大写
+            }else if(middlLevelReg.test(newPassword)){
               $scope.secLevel = 2;
               return false;
-            }
-            if (/^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,20}$/.test(
-                    newPassword)) {
-              $scope.secLevel = 3;
+            }else{
+              $scope.secLevel = 1;
               return false;
             }
           }