Browse Source

密码强度定义描述说明

shibanglin 2 years ago
parent
commit
9175a3b09c

+ 80 - 12
maxkey-core/src/main/java/org/maxkey/entity/PasswordPolicy.java

@@ -1,19 +1,19 @@
 /*
  * Copyright [2020] [MaxKey of copyright http://www.maxkey.top]
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *     http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
- 
+
 
 package org.maxkey.entity;
 
@@ -27,6 +27,10 @@ import javax.validation.constraints.NotNull;
 import org.apache.mybatis.jpa.persistence.JpaBaseEntity;
 import org.maxkey.constants.ConstsServiceMessage;
 import org.maxkey.exception.PasswordPolicyException;
+import org.maxkey.web.WebContext;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author Crystal.Sea
@@ -107,24 +111,88 @@ public class PasswordPolicy extends JpaBaseEntity implements java.io.Serializabl
      */
     @Column
     private int history;
-    
+
     @Column
     private int dictionary;
-    
+
     @Column
     private int alphabetical;
-    
+
     @Column
     private int numerical;
-    
+
     @Column
     private int qwerty;
-    
+
     @Column
     private int occurances;
-    
+
     private int randomPasswordLength;
 
+    List<String> policMessageList;
+
+    public void buildMessage(){
+        if(policMessageList==null){
+            policMessageList = new ArrayList<>();
+        }
+        String msg;
+        if (minLength != 0) {
+            // msg = "新密码长度为"+minLength+"-"+maxLength+"位";
+            msg =   WebContext.getI18nValue("PasswordPolicy.TOO_SHORT",
+                    new Object[]{minLength});
+            policMessageList.add(msg);
+        }
+        if (maxLength != 0) {
+            // msg = "新密码长度为"+minLength+"-"+maxLength+"位";
+            msg =   WebContext.getI18nValue("PasswordPolicy.TOO_LONG",
+                    new Object[]{maxLength});
+            policMessageList.add(msg);
+        }
+
+        if (lowerCase > 0) {
+            //msg = "新密码至少需要包含"+lowerCase+"位【a-z】小写字母";
+            msg =   WebContext.getI18nValue("PasswordPolicy.INSUFFICIENT_LOWERCASE",
+                    new Object[]{lowerCase});
+            policMessageList.add(msg);
+        }
+
+        if (upperCase > 0) {
+            //msg = "新密码至少需要包含"+upperCase+"位【A-Z】大写字母";
+            msg =   WebContext.getI18nValue("PasswordPolicy.INSUFFICIENT_UPPERCASE",
+                    new Object[]{upperCase});
+            policMessageList.add(msg);
+        }
+
+        if (digits > 0) {
+            //msg = "新密码至少需要包含"+digits+"位【0-9】阿拉伯数字";
+            msg =   WebContext.getI18nValue("PasswordPolicy.INSUFFICIENT_DIGIT",
+                    new Object[]{digits});
+            policMessageList.add(msg);
+        }
+
+        if (specialChar > 0) {
+            //msg = "新密码至少需要包含"+specialChar+"位特殊字符";
+            msg =   WebContext.getI18nValue("PasswordPolicy.INSUFFICIENT_SPECIAL",
+                    new Object[]{specialChar});
+            policMessageList.add(msg);
+        }
+
+        if (expiration > 0) {
+            //msg = "新密码有效期为"+expiration+"天";
+            msg =   WebContext.getI18nValue("PasswordPolicy.INSUFFICIENT_EXPIRES_DAY",
+                    new Object[]{expiration});
+            policMessageList.add(msg);
+        }
+    }
+
+    public List<String> getPolicMessageList() {
+        return policMessageList;
+    }
+
+    public void setPolicMessageList(List<String> policMessageList) {
+        this.policMessageList = policMessageList;
+    }
+
     /**
      * @return the minLength
      */
@@ -331,7 +399,7 @@ public class PasswordPolicy extends JpaBaseEntity implements java.io.Serializabl
     public void setOccurances(int occurances) {
         this.occurances = occurances;
     }
-    
+
     public int getRandomPasswordLength() {
         return randomPasswordLength;
     }
@@ -428,5 +496,5 @@ public class PasswordPolicy extends JpaBaseEntity implements java.io.Serializabl
         return builder.toString();
     }
 
-  
+
 }

+ 3 - 1
maxkey-core/src/main/resources/messages/passwordpolicy_message.properties

@@ -25,12 +25,14 @@ PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u
 PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B.
 PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}.
 PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801.
-PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26.
+PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{0}\u4F4D\u5B57\u7B26.
 PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26.
 PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21.
 PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D.
 PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4.
 PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4.
+PasswordPolicy.INSUFFICIENT_EXPIRES_DAY=\u5bc6\u7801\u6709\u6548\u671f\u4e3a{0}\u5929.
+
 
 #\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192
 login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5.

+ 2 - 2
maxkey-core/src/main/resources/messages/passwordpolicy_message_en.properties

@@ -25,13 +25,13 @@ PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=Password matches {0} of {2} characte
 PasswordPolicy.INSUFFICIENT_COMPLEXITY=Password meets {1} complexity rules, but {2} are required.
 PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=No rules have been configured for a password of length {0}.
 PasswordPolicy.SOURCE_VIOLATION=Password cannot be the same as your {0} password.
-PasswordPolicy.TOO_LONG=Password must be no more than {1} characters in length.
+PasswordPolicy.TOO_LONG=Password must be no more than {0} characters in length.
 PasswordPolicy.TOO_SHORT=Password must be {0} or more characters in length .
 PasswordPolicy.TOO_MANY_OCCURRENCES=Password contains {1} occurrences of the character {0}, but at most {2} are allowed.
 PasswordPolicy.OLD_PASSWORD_NOT_MATCH=old password not match.
 PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=new password not match confirm password.
 PasswordPolicy.OLD_PASSWORD_MATCH=new password  match old password.
-
+PasswordPolicy.INSUFFICIENT_EXPIRES_DAY=The password is valid for {0} days
 #for user login
 login.error.attempts=login attempts the maximum {0} times, please login {1} minutes later.
 login.error.locked=The user is locked.

+ 3 - 1
maxkey-core/src/main/resources/messages/passwordpolicy_message_zh_CN.properties

@@ -25,12 +25,14 @@ PasswordPolicy.INSUFFICIENT_CHARACTERISTICS=\u5BC6\u7801\u5339\u914D {0} of{2}\u
 PasswordPolicy.INSUFFICIENT_COMPLEXITY=\u5BC6\u7801\u9047\u5230{1}\u590D\u6742\u89C4\u5219, \u4F46{2}\u5FC5\u987B.
 PasswordPolicy.INSUFFICIENT_COMPLEXITY_RULES=\u6CA1\u6709\u914D\u7F6E\u5BC6\u7801\u957F\u5EA6\u89C4\u5219 {0}.
 PasswordPolicy.SOURCE_VIOLATION=\u5BC6\u7801\u4E0D\u80FD\u5305\u542B{0}\u5BC6\u7801.
-PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{1}\u4F4D\u5B57\u7B26.
+PasswordPolicy.TOO_LONG=\u5BC6\u7801\u6700\u591A{0}\u4F4D\u5B57\u7B26.
 PasswordPolicy.TOO_SHORT=\u5BC6\u7801\u81F3\u5C11{0}\u4F4D\u5B57\u7B26.
 PasswordPolicy.TOO_MANY_OCCURRENCES=\u5BC6\u7801\u5305\u542B{0}\u51FA\u73B0{1}, \u6700\u591A{2} \u6B21.
 PasswordPolicy.OLD_PASSWORD_NOT_MATCH=\u539F\u5BC6\u7801\u4E0D\u5339\u914D.
 PasswordPolicy.CONFIRMPASSWORD_NOT_MATCH=\u65B0\u5BC6\u7801\u4E0E\u786E\u8BA4\u5BC6\u7801\u4E0D\u4E00\u81F4.
 PasswordPolicy.OLD_PASSWORD_MATCH=\u65B0\u5BC6\u7801\u4E0D\u80FD\u4E0E\u65E7\u5BC6\u7801\u4E00\u81F4.
+PasswordPolicy.INSUFFICIENT_EXPIRES_DAY=\u5bc6\u7801\u6709\u6548\u671f\u4e3a{0}\u5929.
+
 
 #\u7528\u6237\u767B\u5F55\u9519\u8BEF\u63D0\u9192
 login.error.attempts=\u767B\u5F55\u9519\u8BEF\u8FBE\u6700\u5927\u9650\u5236{0}\u6B21,\u8BF7{1}\u5206\u949F\u540E\u91CD\u8BD5.