【发布时间】:2012-10-16 12:37:41
【问题描述】:
我有一个属性文件,其中包含我在 java 程序中使用的用户名和密码,但是我无法像在数据库中那样存储多个用户名和密码,只需选择用户名和密码与多行匹配的位置在数据库中。我想我需要在保存用户名和相应密码的文件中存储一个二维数组,但我无法弄清楚如何去做,谷歌也没有给我一种在文件中保存二维数组的方法然而。这是文件中我的用户名和密码的键/值对
`password=k
username=k`
这是读取它们并与用户插入的内容进行比较的代码
`String usr = userfield.getText();
String pwd = new String(pwdfield.getPassword());
Properties config = new Properties();
InputStream is;
try {
is = new FileInputStream("config.properties");
config.load(is);
if (usr.toString().equals(config.getProperty("user").toString()) && pwd.toString().equals(config.getProperty("pass").toString())) {
new DocMenu();
lgFrame.dispose();
} else {
JOptionPane.showMessageDialog(lgFrame, "Wrong credentials try again", "Oops", JOptionPane.ERROR_MESSAGE);
}
is.close();
} catch (Exception ex) {
System.out.println(ex);
ex.printStackTrace();
}`
有人能告诉我如何更改属性文件和代码,以便我能够在文件中拥有多个用户名和密码,只要他们的用户名和密码存在,就可以授予任何用户访问权限。
【问题讨论】:
-
为什么不存储在HashSet中呢?并对其进行序列化/反序列化?
-
感谢@Prototype Stark。能否举个例子或说明如何使用HashSet
-
您可以拥有像这样的凭证属性:
usernameA=p@ssW0rdA和usernameB=l0km30t,当用户输入他们的用户名时,它会查找该属性并返回与他们输入的密码进行比较的密码. 注意: 这是一种不好的凭据,因为当您将密码放入属性文件时,您应该对密码进行一些加密,并且您的程序还应该加密用户密码条目,然后比较两者. -
我建议您检查您的设计:拥有多个(相同的)用户名没有多大意义 - 您需要管理每个用户的唯一 ID。但是,如果您无法区分具有相同用户名的用户这一事实不会打扰您,您可以将他们的密码存储在逗号分隔的列表中,该列表将由 Properties 转换为 ArrayList
。
标签: java properties