你好!我正在用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文件中输入密码是不安全的,但这只是为了练习,因为我还在学习如何编码。非常感谢您提供的任何帮助和建议。谢谢
这对我来说很好:
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.txt
和Passwords.txt
是这样的
username
username1
username2
分别地
password
password1
password2
主要问题是你只检查了第一行。一旦你改变了break
到readline()
方法,并且不能每次检查名称时都给出失败消息。这就是为什么你必须首先循环检查每件事,然后检查你是否失败了。
问题内容: 我有一个脚本化的管道,可以使用该功能请求用户的密码,并将其与用户保存的凭据密码短语进行比较。如果用户输入是一种类型,则可以使用。但是,当我将输入类型更改为(因此用户输入时在屏幕上看不到该输入类型)时,它将失败并显示断言错误。 我确保输入与凭证文件中的密码匹配的密码。 我正在将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 对文件进行编码和解码。 我的代码是 在控制台中我打印文件的编码值…如何使用控制台输出进行解码。