顧客にカスタムパスワードルール設定メカニズムを提供するにはどうすればよいですか?

ラフルミシュラ:

私たちの製品では、顧客はカスタムパスワードルールセッターを必要としています。つまり、パスワードの長さ、大文字、小文字、特殊文字、数字などをパスワードフィールドに含めるためのルールを定義する必要があります。複雑にしたり理解を困難にしたりせずに、これらすべてを定義するための適切なインターフェースをお客様にどのように提供できますか?また、それは少し多すぎますか、カスタムの長さと義務の大文字、小文字、および特殊文字を指定するだけでよいですか?

A.バエナ:

私がそれについてどうするかを説明するためのクイックコード:

public class Test {

    StringBuilder passwordRules = new StringBuilder();

    private void addLowerCaseRule(int length, boolean numbersAllowed){
        if(numbersAllowed){
            passwordRules.append("[a-z0-9]{").append(length).append("}");
        }else{
            passwordRules.append("[a-z]{").append(length).append("}");
        }
    }

    private void addUpperCaseRule(int length, boolean numbersAllowed){
        if(numbersAllowed){
            passwordRules.append("[A-Z0-9]{").append(length).append("}");
        }else{
            passwordRules.append("[A-Z]{").append(length).append("}");
        }
    }

    private void addLowerAndUpperCaseRule(int length, boolean numbersAllowed){
        if(numbersAllowed){
            passwordRules.append("[aA-zZ0-9]{").append(length).append("}");
        }else{
            passwordRules.append("[aA-zZ]{").append(length).append("}");
        }
    }

    private boolean checkPassword(String password){
        if (password.matches(passwordRules.toString())) return true;
        return false;
    }

    public static void main(String[] args){
        Test test = new Test();
        test.addLowerAndUpperCaseRule(4, false);
        test.addLowerAndUpperCaseRule(5, true);

        String password = "tPrz05637";
        String passwordTwo = "t8ea17r88";

        System.out.println("First password returns " + test.checkPassword(password));
        System.out.println("Second password returns " + test.checkPassword(passwordTwo));
    }
}

必要なのは、必要な数の異なるルールを追加してから、レイアウト(たとえば、ボタン、textFields、リストが既に追加されているルールを表示するためのJframe)を作成して、顧客がこれらのルールを追加できるようにすることです視覚的なファッション。新しいルールが追加されるたびに、対応するメソッドを呼び出します。

もちろん、ルールを削除するためのコードも追加する必要がありますが、この小さなコードは、続行方法のアイデアを提供すると思います。

更新:Swingを使用して非常に不愉快なレイアウトを開発し、私のアプローチをわかりやすく説明しました。

public class Test extends JFrame{

    String passwordRules;

    JButton addLowerAndUpperCaseRuleButton;
    JButton deleteSelectedButton;
    JTextField addLowerAndUpperCaseRuleField;
    JCheckBox addLowerAndUpperCaseRuleBox;

    JList<String> rulesList;
    DefaultListModel<String> listModel;

    JTextField testPasswordField;
    JButton testPasswordButton;

    public Test(){
        this.setPreferredSize(new Dimension(900, 100));

        addLowerAndUpperCaseRuleField = new JTextField();
        addLowerAndUpperCaseRuleField.setText(String.valueOf(1));
        addLowerAndUpperCaseRuleField.setPreferredSize(new Dimension(30, 25));

        addLowerAndUpperCaseRuleBox = new JCheckBox();

        addLowerAndUpperCaseRuleButton = new JButton();
        addLowerAndUpperCaseRuleButton.setText("Add lower and upper rule");
        addLowerAndUpperCaseRuleButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                addLowerAndUpperCaseRule(Integer.valueOf(addLowerAndUpperCaseRuleField.getText()), addLowerAndUpperCaseRuleBox.isSelected());
            }
        });

        deleteSelectedButton = new JButton();
        deleteSelectedButton.setText("Delete selected");
        deleteSelectedButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                listModel.remove(rulesList.getSelectedIndex());
            }
        });


        rulesList = new JList<>();
        rulesList.setSize(new Dimension(250, 50));
        listModel = new DefaultListModel<>();
        rulesList.setModel(listModel);

        testPasswordField = new JTextField();
        testPasswordField.setPreferredSize(new Dimension(90, 25));
        testPasswordButton = new JButton("Check");
        testPasswordButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent ae) {
                passwordRules = testPasswordField.getText();
                boolean result = checkPassword(passwordRules);
                JOptionPane.showMessageDialog(null, "The password check returns " + result);
            }
        });

        this.add(addLowerAndUpperCaseRuleButton);
        this.add(addLowerAndUpperCaseRuleField);
        this.add(addLowerAndUpperCaseRuleBox);
        this.add(rulesList);
        this.add(deleteSelectedButton);
        this.add(new JLabel("Password to test: "));
        this.add(testPasswordField);
        this.add(testPasswordButton);

        this.setLayout(new FlowLayout());
        this.pack();
        this.setVisible(true);

        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    private void addLowerCaseRule(int length, boolean numbersAllowed){
        String rule;
        if(numbersAllowed){
            rule = "[a-z0-9]{" + length + "}";
        }else{
            rule = "[a-z]{" + length + "}";
        }
        listModel.addElement(rule);
    }

    private void addUpperCaseRule(int length, boolean numbersAllowed){
        String rule;
        if(numbersAllowed){
            rule = "[A-Z0-9]{" + length + "}";
        }else{
            rule = "[A-Z]{" + length + "}";
        }
        listModel.addElement(rule);
    }

    private void addLowerAndUpperCaseRule(int length, boolean numbersAllowed){
        String rule;
        if(numbersAllowed){
            rule = "[aA-zZ0-9]{" + length + "}";
        }else{
            rule = "[aA-zZ]{" + length + "}";
        }
        listModel.addElement(rule);
    }

    private boolean checkPassword(String password){
        StringBuilder rules = new StringBuilder();
        for(int i = 0; i < listModel.size(); i++){
            rules.append(listModel.get(i));
        }
        if (password.matches(rules.toString())) return true;
        return false;
    }

    public static void main(String[] args){
        Test test = new Test();
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Magento 2.2の顧客登録にカスタムフィールドを追加するにはどうすればよいですか?

分類Dev

カスタムIDフィールドを設定するにはどうすればよいですか?

分類Dev

WordDelimiterTokenFilterでカスタムパラメータを設定するにはどうすればよいですか

分類Dev

PHPガズル。マルチパートPOSTリクエストにカスタム境界を設定するにはどうすればよいですか?

分類Dev

Javaでカスタムカーソルを設定するにはどうすればよいですか?

分類Dev

Magento2の顧客テーブルにカスタム列を追加するにはどうすればよいですか?

分類Dev

バーにカスタムラベルを設定するにはどうすればよいですか?

分類Dev

カスタムドロワーアイテムを動的に「フォーカス」に設定するにはどうすればよいですか?

分類Dev

カスタムDjangoビューからパスワードリセットメールを送信するにはどうすればよいですか?

分類Dev

DeviseMailerメールのカスタムbcc / toフィールドを設定するにはどうすればよいですか?

分類Dev

メールガンの電子メールにカスタムメッセージIDを設定するにはどうすればよいですか?

分類Dev

ターミナルからカスタムキーボードショートカットを設定するにはどうすればよいですか?

分類Dev

カスタムビルド設定を定義するにはどうすればよいですか?

分類Dev

フレームワーク4.0のすべてのスレッドにUIカルチャを設定するにはどうすればよいですか?

分類Dev

フォームのタイトルバー、システムメニューアイコンにカスタムカーソルを設定し、ボタンを最小化、最大化、閉じるにはどうすればよいですか?

分類Dev

Advancedインストーラーでファイルのカスタムパスを設定するにはどうすればよいですか?

分類Dev

カスタムスタイルをantdSelectに設定するにはどうすればよいですか?

分類Dev

キースパーマーのQBOフレームワークを使用してカスタムフィールドの値を設定するにはどうすればよいですか?

分類Dev

Yii 2でカスタム設定データをグローバルに利用できるようにするにはどうすればよいですか?

分類Dev

タイムピッカーでカスタムタイトルを設定するにはどうすればよいですか?

分類Dev

nvidiaドライバーをインストールしてカスタム解像度を設定するにはどうすればよいですか?

分類Dev

CHEditorでブラウズサーバーのカスタムパスを設定するにはどうすればよいですか

分類Dev

Kotlin for TeamCityのカスタムビルドステップでパラメーターを非表示にするにはどうすればよいですか?

分類Dev

Drupal 8のサブメニューにカスタムクラスを設定するにはどうすればよいですか?

分類Dev

Laravel 5.6のデフォルトのパスワードを忘れたメカニズムをオーバーライドするにはどうすればよいですか?

分類Dev

テーマでカスタムルートを定義するにはどうすればよいですか?

分類Dev

カスタムフィールドをWooCommerce設定の[商品在庫]タブに追加するにはどうすればよいですか?

分類Dev

出現ドライバーのカスタムクロームバイナリパスを設定するにはどうすればよいですか?

分類Dev

X軸にカスタムラベルを設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    Magento 2.2の顧客登録にカスタムフィールドを追加するにはどうすればよいですか?

  2. 2

    カスタムIDフィールドを設定するにはどうすればよいですか?

  3. 3

    WordDelimiterTokenFilterでカスタムパラメータを設定するにはどうすればよいですか

  4. 4

    PHPガズル。マルチパートPOSTリクエストにカスタム境界を設定するにはどうすればよいですか?

  5. 5

    Javaでカスタムカーソルを設定するにはどうすればよいですか?

  6. 6

    Magento2の顧客テーブルにカスタム列を追加するにはどうすればよいですか?

  7. 7

    バーにカスタムラベルを設定するにはどうすればよいですか?

  8. 8

    カスタムドロワーアイテムを動的に「フォーカス」に設定するにはどうすればよいですか?

  9. 9

    カスタムDjangoビューからパスワードリセットメールを送信するにはどうすればよいですか?

  10. 10

    DeviseMailerメールのカスタムbcc / toフィールドを設定するにはどうすればよいですか?

  11. 11

    メールガンの電子メールにカスタムメッセージIDを設定するにはどうすればよいですか?

  12. 12

    ターミナルからカスタムキーボードショートカットを設定するにはどうすればよいですか?

  13. 13

    カスタムビルド設定を定義するにはどうすればよいですか?

  14. 14

    フレームワーク4.0のすべてのスレッドにUIカルチャを設定するにはどうすればよいですか?

  15. 15

    フォームのタイトルバー、システムメニューアイコンにカスタムカーソルを設定し、ボタンを最小化、最大化、閉じるにはどうすればよいですか?

  16. 16

    Advancedインストーラーでファイルのカスタムパスを設定するにはどうすればよいですか?

  17. 17

    カスタムスタイルをantdSelectに設定するにはどうすればよいですか?

  18. 18

    キースパーマーのQBOフレームワークを使用してカスタムフィールドの値を設定するにはどうすればよいですか?

  19. 19

    Yii 2でカスタム設定データをグローバルに利用できるようにするにはどうすればよいですか?

  20. 20

    タイムピッカーでカスタムタイトルを設定するにはどうすればよいですか?

  21. 21

    nvidiaドライバーをインストールしてカスタム解像度を設定するにはどうすればよいですか?

  22. 22

    CHEditorでブラウズサーバーのカスタムパスを設定するにはどうすればよいですか

  23. 23

    Kotlin for TeamCityのカスタムビルドステップでパラメーターを非表示にするにはどうすればよいですか?

  24. 24

    Drupal 8のサブメニューにカスタムクラスを設定するにはどうすればよいですか?

  25. 25

    Laravel 5.6のデフォルトのパスワードを忘れたメカニズムをオーバーライドするにはどうすればよいですか?

  26. 26

    テーマでカスタムルートを定義するにはどうすればよいですか?

  27. 27

    カスタムフィールドをWooCommerce設定の[商品在庫]タブに追加するにはどうすればよいですか?

  28. 28

    出現ドライバーのカスタムクロームバイナリパスを設定するにはどうすればよいですか?

  29. 29

    X軸にカスタムラベルを設定するにはどうすればよいですか?

ホットタグ

アーカイブ