当前位置: 首页 > 知识库问答 >
问题:

如何将用户和密码输入与文本文件进行比较?

丁翰海
2023-03-14

你好!我正在用java中的swing包创建一个简单的登录表单,在检查用户名和密码是否正确时遇到了问题。

以下是当前的代码:

public void actionPerformed(ActionEvent e) {
    try{
    File user = new File("Usernames.txt");
    File pass = new File("Passwords.txt");
    FileReader frUsername = new FileReader(user);
    FileReader frPassword = new FileReader(pass);
    BufferedReader brUsername = new BufferedReader(frUsername);
    BufferedReader brPassword = new BufferedReader(frPassword);
    String username = brUsername.readLine();
    String password = brPassword.readLine();

    if (e.getSource() == btnLogin){
        while(username != null && password != null){
           
        if ((txtUsername.getText()).equals(username) && (new String (jpfPassword.getPassword()).equals(password))){
            JOptionPane.showMessageDialog(null, "Welcome: " + username, "Login Successful",JOptionPane.INFORMATION_MESSAGE); //this is for testing purposes only
        }
        else{
            JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Unable to Login",0); //this is for testing purposes only
        }
       
        break;
    }
    }
    brUsername.close();
    brPassword.close();
}
    catch(IOException err){
        System.err.println("File not found.");
    }
}

}

这个想法是在密码和用户名文件中存储多个帐户。例如,文件内容是:

Username.txt:

       SampleUsername1
       SampleUsername2

暗语txt:

    SamplePassword1
    SamplePassword2

如果用户名文件的第1行是“sampleUsername1”,那么它的密码也来自密码文件的第1行“samplePassword1”。如果用户和密码不在同一行或不在文件中,则应给出“无效”错误。我知道在txt文件中输入密码是不安全的,但这只是为了练习,因为我还在学习如何编码。非常感谢您提供的任何帮助和建议。谢谢

共有1个答案

汲永嘉
2023-03-14

这对我来说很好:

public static void main(String[] args) {
    String txtUsername = "username2";
    String jpfPassword = "password2";
    try {
        File user = new File("Usernames.txt");
        File pass = new File("Passwords.txt");
        FileReader frUsername = new FileReader(user);
        FileReader frPassword = new FileReader(pass);
        BufferedReader brUsername = new BufferedReader(frUsername);
        BufferedReader brPassword = new BufferedReader(frPassword);
        String username = brUsername.readLine();
        String password = brPassword.readLine();

        boolean loginSuccess = false;
        while (username != null && password != null) {

            if ((txtUsername).equals(username) && (jpfPassword.equals(password))) {
                JOptionPane.showMessageDialog(null, "Welcome: " + username, "Login Successful", JOptionPane.INFORMATION_MESSAGE); //this is for testing purposes only
                loginSuccess = true;
                break;
            }
            username = brUsername.readLine();
            password = brPassword.readLine();
        }
        if (!loginSuccess) {
            JOptionPane.showMessageDialog(null, "Invalid Username or Password", "Unable to Login", 0); //this is for testing purposes only
        }
        brUsername.close();
        brPassword.close();

    } catch (IOException e) {
        e.printStackTrace();
    }
}

我的Usernames.txtPasswords.txt是这样的

username
username1
username2

分别地

password
password1
password2

主要问题是你只检查了第一行。一旦你改变了breakreadline()方法,并且不能每次检查名称时都给出失败消息。这就是为什么你必须首先循环检查每件事,然后检查你是否失败了。

 类似资料:
  • 问题内容: 我有一个脚本化的管道,可以使用该功能请求用户的密码,并将其与用户保存的凭据密码短语进行比较。如果用户输入是一种类型,则可以使用。但是,当我将输入类型更改为(因此用户输入时在屏幕上看不到该输入类型)时,它将失败并显示断言错误。 我确保输入与凭证文件中的密码匹配的密码。 我正在将Jenkins 2.83与最新的Credentials插件和Credentials绑定插件一起使用。 脚本: 我

  • 我的应用程序中有一个用例,它应该防止用户在重置密码时选择最后3个密码中的一个。我使用Angular作为前端,spring boot作为后端。在我的场景中,用户密码存储为bcrypt哈希。 如何将用户输入的密码与最近3个存储的bcrypt密码进行比较? 当我运行下面的代码片段示例时, 它生成以下bcrypt哈希。每个散列都是不同的,这是合理的,因为当我检查时,我可以看到生成的salt是随机值。 sp

  • 问题内容: 我想用散列密码,以后再验证提供的密码是否正确。 散列密码很容易: 如何将纯文本密码与存储的哈希值进行比较? 问题答案: 使用py-bcrypt,您不需要单独存储盐:将盐存储在哈希中。 您可以简单地将哈希用作盐,盐将存储在哈希的开头。

  • 问题内容: 我有一个类,要求输入用户名和密码来使应用程序中的用户生效。 在其中,我有2个 JTextField 对象,一个用于用户名输入,另一个用于密码输入。 它工作正常,但是我的问题是,当用户在pswdTextField中写入密码时,密码显示在其中。我想通过为组成插入密码的每个字母显示一个点,星号或类似字符来隐藏它。 怎么做? 问题答案: 而不是使用JTextField,请为您的pswdText

  • 如果用户创建了一个新密码,并通过哈希算法存储在数据库中,则在用户登录时可以将其与用户输入的密码进行匹配。输入到登录屏幕的密码将被哈希化,然后检查它是否与存储的哈希匹配。如果是,则允许用户访问。 然而,如今,密码是经过哈希和盐处理的。因此,当用户第一次注册密码时,它会经过一个散列,然后会被加密10000次以上。这个salt与后端代码生成的关键字相同,还是每次salt都随机生成? 当用户输入密码登录时

  • 我已经为用户创建了多个文件上传选项。我想对上传的文件进行编码和解码...在这里,我编写了将图像转换为base64字符串的程序...如何使用 base64 对文件进行编码和解码。 我的代码是 在控制台中我打印文件的编码值…如何使用控制台输出进行解码。