Passay - Hướng dẫn nhanh
Passaylà một thư viện xác thực và tạo Mật khẩu dựa trên Java. Nó cung cấp danh sách các tính năng toàn diện để xác thực / tạo mật khẩu và có thể cấu hình cao.
Thành phần Passay
API Passay có 3 thành phần cốt lõi.
Rule - một hoặc nhiều quy tắc xác định bộ quy tắc chính sách mật khẩu.
PasswordValidator - Một thành phần xác thực xác nhận mật khẩu dựa trên một bộ quy tắc nhất định.
PasswordGenerator - Một thành phần tạo ra mật khẩu để đáp ứng một bộ quy tắc nhất định.
Tổng quan về quy tắc
Các quy tắc là nền tảng cho cả xác thực và tạo mật khẩu. Có hai loại quy tắc lớn:
Đối sánh tích cực yêu cầu mật khẩu đáp ứng quy tắc.
Mật khẩu từ chối đối sánh phủ định đáp ứng quy tắc.
Đặc trưng
Sau đây là một số tính năng mà thư viện Passay cung cấp.
Password Validation- Thư viện Passay giúp thực thi chính sách mật khẩu bằng cách xác thực mật khẩu dựa trên bộ quy tắc có thể định cấu hình. Nó có một bộ quy tắc hiện có phong phú cho các trường hợp sử dụng phổ biến. Đối với các trường hợp bổ sung, nó cung cấp giao diện Quy tắc đơn giản để triển khai quy tắc tùy chỉnh.
Password Generation - Nó cung cấp một bộ quy tắc có thể định cấu hình có thể được sử dụng để tạo mật khẩu.
Command Line Tools - Nó cung cấp các công cụ để tự động hóa việc thực thi chính sách mật khẩu.
convenient - Dễ sử dụng.
Extensible - Tất cả các thành phần Passay đều có thể mở rộng.
Supports Internalization - Các thành phần Passay đã sẵn sàng quốc tế hóa.
Thiết lập môi trường cục bộ
Nếu bạn vẫn sẵn sàng thiết lập môi trường của mình cho ngôn ngữ lập trình Java, thì phần này sẽ hướng dẫn bạn cách tải xuống và thiết lập Java trên máy của bạn. Vui lòng làm theo các bước được đề cập bên dưới để thiết lập môi trường.
Java SE có sẵn miễn phí từ liên kết Tải xuống Java . Vì vậy, bạn tải xuống một phiên bản dựa trên hệ điều hành của bạn.
Làm theo hướng dẫn để tải xuống Java và chạy .exeđể cài đặt Java trên máy của bạn. Khi bạn đã cài đặt Java trên máy của mình, bạn sẽ cần đặt các biến môi trường để trỏ đến các thư mục cài đặt chính xác -
Thiết lập đường dẫn cho Windows 2000 / XP
Chúng tôi giả định rằng bạn đã cài đặt Java trong thư mục c: \ Program Files \ java \ jdk -
Nhấp chuột phải vào 'Máy tính của tôi' và chọn 'Thuộc tính'.
Nhấp vào nút 'Biến môi trường' trong tab 'Nâng cao'.
Bây giờ, hãy thay đổi biến 'Đường dẫn' để nó cũng chứa đường dẫn đến tệp thực thi Java. Ví dụ, nếu đường dẫn hiện được đặt thành 'C: \ WINDOWS \ SYSTEM32', thì hãy thay đổi đường dẫn của bạn thành 'C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin'.
Thiết lập đường dẫn cho Windows 95/98 / ME
Chúng tôi giả định rằng bạn đã cài đặt Java trong thư mục c: \ Program Files \ java \ jdk -
Chỉnh sửa tệp 'C: \ autoexec.bat' và thêm dòng sau vào cuối - 'SET PATH =% PATH%; C: \ Program Files \ java \ jdk \ bin'
Thiết lập đường dẫn cho Linux, UNIX, Solaris, FreeBSD
Biến môi trường PATH phải được đặt để trỏ đến nơi các tệp nhị phân Java đã được cài đặt. Tham khảo tài liệu shell của bạn nếu bạn gặp khó khăn khi thực hiện việc này.
Ví dụ: nếu bạn sử dụng bash làm trình bao, thì bạn sẽ thêm dòng sau vào cuối '.bashrc: export PATH = / path / to / java: $ PATH'
Trình chỉnh sửa Java phổ biến
Để viết các chương trình Java, bạn cần một trình soạn thảo văn bản. Có rất nhiều IDE tinh vi có sẵn trên thị trường. Nhưng hiện tại, bạn có thể xem xét một trong những điều sau:
Notepad - Trên máy Windows, bạn có thể sử dụng bất kỳ trình soạn thảo văn bản đơn giản nào như Notepad (Khuyến nghị cho hướng dẫn này), TextPad.
Netbeans - Nó là một IDE Java mã nguồn mở và miễn phí có thể được tải xuống từ https://www.netbeans.org/index.html.
Eclipse - Nó cũng là một IDE Java được phát triển bởi cộng đồng nguồn mở eclipse và có thể được tải xuống từ https://www.eclipse.org/.
Tải xuống bản lưu trữ Passay
Tải xuống phiên bản mới nhất của tệp jar Passay từ Maven Repository - . Trong hướng dẫn này, passay-1.4.0.jar được tải xuống và sao chép vào thư mục C: \> passay.
Hệ điều hành | Tên lưu trữ |
---|---|
các cửa sổ | passay-1.4.0.jar |
Linux | passay-1.4.0.jar |
Mac | passay-1.4.0.jar |
Đặt môi trường Passay
Đặt PASSAYbiến môi trường để trỏ đến vị trí thư mục cơ sở nơi lưu trữ Passay jar trên máy của bạn. Giả sử, chúng tôi đã giải nén passay-1.4.0.jar trong thư mục Passay trên các Hệ điều hành khác nhau như sau.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Đặt biến môi trường PASSAY thành C: \ Passay |
Linux | xuất PASSAY = / usr / local / Passay |
Mac | xuất PASSAY = / Library / Passay |
Đặt biến CLASSPATH
Đặt CLASSPATHbiến môi trường để trỏ đến vị trí jar Passay. Giả sử, bạn đã lưu trữ passay-1.4.0.jar trong thư mục Passay trên các Hệ điều hành khác nhau như sau.
Hệ điều hành | Đầu ra |
---|---|
các cửa sổ | Đặt biến môi trường CLASSPATH thành% CLASSPATH%;% Passay% \ passay-1.4.0.jar;.; |
Linux | xuất CLASSPATH = $ CLASSPATH: $ PASSAY / passay-1.4.0.jar:. |
Mac | xuất CLASSPATH = $ CLASSPATH: $ PASSAY / passay-1.4.0.jar:. |
Chính sách Mật khẩu điển hình chứa một bộ quy tắc để kiểm tra mật khẩu xem có tuân thủ các quy tắc của tổ chức hay không. Xem xét chính sách sau:
Độ dài của mật khẩu phải từ 8 đến 16 ký tự.
Mật khẩu không được chứa bất kỳ khoảng trắng nào.
Mật khẩu phải bao gồm từng phần sau: chữ hoa, chữ thường, chữ số và ký hiệu.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("Microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Password validated.
Passay libary cung cấp API MessageResolver để ghi đè các thông báo mặc định được trình xác thực sử dụng. Nó có thể lấy đường dẫn đến tệp thuộc tính tùy chỉnh và sử dụng các khóa tiêu chuẩn để ghi đè thông báo bắt buộc.
Thí dụ
Ví dụ dưới đây cho thấy xác thực mật khẩu và hiển thị thông báo tùy chỉnh bằng cách sử dụng thư viện Passay.
messages.properties
INSUFFICIENT_UPPERCASE=Password missing at least %1$s uppercase characters.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.MessageResolver;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.PropertiesMessageResolver;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
List<Rule> rules = new ArrayList<>();
rules.add(new LengthRule(8, 16));
rules.add(new WhitespaceRule());
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
Properties props = new Properties();
props.load(new FileInputStream("E:/Test/messages.properties"));
MessageResolver resolver = new PropertiesMessageResolver(props);
PasswordValidator validator = new PasswordValidator(resolver, rules);
PasswordData password = new PasswordData("microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password missing at least 1 uppercase characters.]
Nhiều khi chính sách mật khẩu bắt buộc tuân thủ các quy tắc tối thiểu trong số các quy tắc đã cho, chẳng hạn như mật khẩu phải tuân thủ ít nhất M trong số N quy tắc. Hãy xem xét chính sách sau đây.
Độ dài của mật khẩu phải từ 8 đến 16 ký tự.
Mật khẩu không được chứa bất kỳ khoảng trắng nào.
Mật khẩu phải chứa ít nhất ba trong số sau: chữ hoa, chữ thường, chữ số hoặc ký hiệu.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import java.io.FileNotFoundException;
import java.io.IOException;
import org.passay.CharacterCharacteristicsRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
//Rule 1: Password length should be in between
//8 and 16 characters
Rule rule1 = new LengthRule(8, 16);
//Rule 2: No whitespace allowed
Rule rule2 = new WhitespaceRule();
CharacterCharacteristicsRule rule3 = new CharacterCharacteristicsRule();
//M - Mandatory characters count
rule3.setNumberOfCharacteristics(3);
//Rule 3.a: One Upper-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: One Lower-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: One digit
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: One special character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rule1, rule2, rule3);
PasswordData password = new PasswordData("microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Password validated.
PasswordGeneratorgiúp tạo mật khẩu bằng chính sách nhất định. Xem xét chính sách sau:
Độ dài của mật khẩu phải là 8 ký tự.
Mật khẩu phải bao gồm từng phần sau: chữ hoa, chữ thường, chữ số và ký hiệu.
Thí dụ
Ví dụ dưới đây cho thấy việc tạo mật khẩu chống lại chính sách trên bằng thư viện Passay.
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.PasswordGenerator;
public class PassayExample {
public static void main(String[] args) {
CharacterRule alphabets = new CharacterRule(EnglishCharacterData.Alphabetical);
CharacterRule digits = new CharacterRule(EnglishCharacterData.Digit);
CharacterRule special = new CharacterRule(EnglishCharacterData.Special);
PasswordGenerator passwordGenerator = new PasswordGenerator();
String password = passwordGenerator.generatePassword(8, alphabets, digits, special);
System.out.println(password);
}
}
Đầu ra
?\DE~@c3
AllowedCharacterRulecho phép chỉ định các ký tự mà mật khẩu có thể bao gồm. Hãy xem xét ví dụ sau.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import org.passay.AllowedCharacterRule;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should contains only a, b and c
Rule rule1 = new AllowedCharacterRule(new char[] {'a', 'b', 'c'});
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("abcabcab1");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password contains the illegal character '1'.]
AllowedRegexRulecho phép chỉ định mẫu thông thường mà mật khẩu phải đáp ứng. Hãy xem xét ví dụ sau.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import org.passay.AllowedRegexRule;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should contains alphabets only
Rule rule1 = new AllowedRegexRule("^[A-Za-z]+$");
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password must match pattern '^[A-Za-z]+$'.]
CharacterRulegiúp xác định một tập hợp các ký tự và số tối thiểu. các ký tự bắt buộc trong mật khẩu.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("Microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Password validated.
LengthRule giúp xác định độ dài tối thiểu và tối đa của mật khẩu.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import java.util.ArrayList;
import java.util.List;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
List<Rule> rules = new ArrayList<>();
//Rule 1: Password length should be in between
//8 and 16 characters
rules.add(new LengthRule(8, 16));
//Rule 2: No whitespace allowed
rules.add(new WhitespaceRule());
//Rule 3.a: At least one Upper-case character
rules.add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: At least one Lower-case character
rules.add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: At least one digit
rules.add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: At least one special character
rules.add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rules);
PasswordData password = new PasswordData("Microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Password validated.
CharacterCharacteristicsRule giúp xác định xem một mật khẩu có đáp ứng N quy tắc đã xác định hay không.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import java.io.FileNotFoundException;
import java.io.IOException;
import org.passay.CharacterCharacteristicsRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) throws FileNotFoundException, IOException {
//Rule 1: Password length should be in between
//8 and 16 characters
Rule rule1 = new LengthRule(8, 16);
//Rule 2: No whitespace allowed
Rule rule2 = new WhitespaceRule();
CharacterCharacteristicsRule rule3 = new CharacterCharacteristicsRule();
//M - Mandatory characters count
rule3.setNumberOfCharacteristics(3);
//Rule 3.a: One Upper-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.UpperCase, 1));
//Rule 3.b: One Lower-case character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.LowerCase, 1));
//Rule 3.c: One digit
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Digit, 1));
//Rule 3.d: One special character
rule3.getRules().add(new CharacterRule(EnglishCharacterData.Special, 1));
PasswordValidator validator = new PasswordValidator(rule1, rule2, rule3);
PasswordData password = new PasswordData("microsoft@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Password validated.
LengthComplexityRulegiúp xác định quy tắc áp dụng cho mật khẩu dựa trên độ dài của nó. Hãy xem xét chính sách sau đây.
Nếu độ dài của mật khẩu nằm trong khoảng từ 1 đến 5 ký tự thì chỉ cho phép các bảng chữ cái viết thường.
Nếu độ dài của mật khẩu trong khoảng từ 6 đến 8 ký tự thì chỉ cho phép a, b và c.
Thí dụ
Ví dụ dưới đây cho thấy việc xác thực mật khẩu theo chính sách trên bằng thư viện Passay.
import org.passay.AllowedCharacterRule;
import org.passay.CharacterRule;
import org.passay.EnglishCharacterData;
import org.passay.LengthComplexityRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
LengthComplexityRule lengthComplexityRule = new LengthComplexityRule();
//Rule: Password of 1 to 5 characters should contains lower case alphabets only
lengthComplexityRule.addRules("[1,5]",
new CharacterRule(EnglishCharacterData.LowerCase, 5));
//8 and 16 characters
lengthComplexityRule.addRules("[6,8]",
new AllowedCharacterRule(new char[] { 'a', 'b', 'c' }));
PasswordValidator validator = new PasswordValidator(lengthComplexityRule);
PasswordData password = new PasswordData("abcdef");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [
Password contains the illegal character 'd'.,
Password contains the illegal character 'e'.,
Password contains the illegal character 'f'.,
Password meets 0 complexity rules, but 1 are required.]
IllegalCharacterRulecho phép chỉ định các ký tự không được phép trong mật khẩu. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
NumberRangeRulecho phép chỉ định dải số không được phép trong mật khẩu. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
WhitespaceRulecho phép xác định rằng các khoảng trắng không được phép trong mật khẩu. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.IllegalCharacterRule;
import org.passay.NumberRangeRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.WhitespaceRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Special characters like &, <, > are not allowed in a password
IllegalCharacterRule illegalCharacterRule
= new IllegalCharacterRule(new char[] {'&', '<', '>'});
//Rule: 1 to 5 numbers are not allowed
NumberRangeRule numberRangeRule = new NumberRangeRule(1, 5);
//Rule: White spaces are not allowed
WhitespaceRule whitespaceRule = new WhitespaceRule();
PasswordValidator validator
= new PasswordValidator(illegalCharacterRule,numberRangeRule,whitespaceRule);
PasswordData password = new PasswordData("abc&4d ef6");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
} else {
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [
Password contains the illegal character '&'.,
Password contains the number '4'.,
Password contains a whitespace character.]
DictionaryRulecho phép kiểm tra nếu một số từ không được chỉ định làm mật khẩu. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.DictionaryRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.dictionary.ArrayWordList;
import org.passay.dictionary.WordListDictionary;
public class PassayExample {
public static void main(String[] args) {
WordListDictionary wordListDictionary = new WordListDictionary(
new ArrayWordList(new String[] { "password", "username" }));
DictionaryRule dictionaryRule = new DictionaryRule(wordListDictionary);
PasswordValidator validator = new PasswordValidator(dictionaryRule);
PasswordData password = new PasswordData("password");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password contains the dictionary word 'password'.]
DictionarySubstringRulecho phép kiểm tra xem các từ nhất định không phải là một phần của mật khẩu. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.DictionarySubstringRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.dictionary.ArrayWordList;
import org.passay.dictionary.WordListDictionary;
public class PassayExample {
public static void main(String[] args) {
WordListDictionary wordListDictionary = new WordListDictionary(
new ArrayWordList(new String[] { "password", "username" }));
DictionarySubstringRule dictionaryRule = new DictionarySubstringRule(wordListDictionary);
PasswordValidator validator = new PasswordValidator(dictionaryRule);
PasswordData password = new PasswordData("password@123");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password contains the dictionary word 'password'.]
HistoryRulecho phép kiểm tra xem mật khẩu đã cho đã không được sử dụng trong quá khứ hay chưa. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.HistoryRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RuleResult;
import org.passay.SourceRule;
public class PassayExample {
public static void main(String[] args) {
SourceRule sourceRule = new SourceRule();
HistoryRule historyRule = new HistoryRule();
PasswordValidator validator = new PasswordValidator(sourceRule, historyRule);
PasswordData password = new PasswordData("password@123");
password.setPasswordReferences(
new PasswordData.SourceReference("source", "password"),
new PasswordData.HistoricalReference("password@123")
);
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password matches one of 1 previous passwords.]
RepeatCharacterRegexRulecho phép kiểm tra xem mật khẩu đã cho có ký tự ascii lặp lại hay không. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.LengthRule;
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.RepeatCharacterRegexRule;
import org.passay.Rule;
import org.passay.RuleResult;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should not contain repeated entries
Rule rule1 = new RepeatCharacterRegexRule(3);
//8 and 16 characters
Rule rule2 = new LengthRule(8, 16);
PasswordValidator validator = new PasswordValidator(rule1, rule2);
PasswordData password = new PasswordData("aaefhehhhhh");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password matches the illegal pattern 'hhh'.]
UsernameRuleđảm bảo rằng mật khẩu không chứa tên người dùng. Hãy xem xét ví dụ sau.
Thí dụ
import org.passay.PasswordData;
import org.passay.PasswordValidator;
import org.passay.Rule;
import org.passay.RuleResult;
import org.passay.UsernameRule;
public class PassayExample {
public static void main(String[] args) {
//Rule: Password should not contain user-name
Rule rule = new UsernameRule();
PasswordValidator validator = new PasswordValidator(rule);
PasswordData password = new PasswordData("microsoft");
password.setUsername("micro");
RuleResult result = validator.validate(password);
if(result.isValid()){
System.out.println("Password validated.");
}else{
System.out.println("Invalid Password: " + validator.getMessages(result));
}
}
}
Đầu ra
Invalid Password: [Password contains the user id 'micro'.]