我正在java上创建一个登录系统。我已将用户标识和密码存储在哈希Map中。当用户登录到系统时。它们输入凭据,如果与哈希Map中的凭据匹配,则用户将登录。
我现在要做的是,捕获哪个用户通过userid登录。原因是我希望能够看到哪个用户按下了jbutton。为了做到这一点,我需要找到一种方法来引用已登录用户的userid。
我该怎么办?
下面的代码片段来自我的login类,它显示了我如何允许用户登录
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==resetButton) {
userIDField.setText("");
userPasswordField.setText("");
}
if(e.getSource()==loginButton) {
String userID = userIDField.getText();
String password = String.valueOf(userPasswordField.getPassword());
if(logininfo.containsKey(userID)) {
if(logininfo.get(userID).equals(password)) {
messageLabel.setForeground(Color.green);
messageLabel.setText("Login successful");
frame.dispose();
WelcomePage welcomePage = new WelcomePage(userID);
}
else {
messageLabel.setForeground(Color.red);
messageLabel.setText("Wrong password");
}
}
else {
messageLabel.setForeground(Color.red);
messageLabel.setText("Incorrect, try again");
}
}
}
}
这个代码片段是来自idandpasswords类的,它显示了用户ID和密码的哈希Map
import java.util.HashMap;
public class IDandPasswords {
HashMap<String,String> logininfo = new HashMap<String,String>();
IDandPasswords(){
logininfo.put("manager","abc123");
logininfo.put("user1","abc123");
logininfo.put("user2","abc123");
logininfo.put("user3","abc123");
}
public HashMap getLoginInfo(){
return logininfo;
}
}
1条答案
按热度按时间ovfsdjhp1#
你在试图重现一个上下文
它是一个白板,我们将数据存储在应用程序的全局生命周期中。
实现这一点的一个简单方法是创建一个类,其中包含字符串、对象元素的hashmap
HashMap<String,Object>
试着写一些方法就像
initContext
,setContextValue(String key, Object value)
,Object getContextValue(String key)
,getUser()
...然后,尝试使用单例模式来安全地获得它,以确保它的唯一性。
关于引用对象,我建议使用typingsafety原则
假设你有这样一个上下文,你可以用任何你想要的方式来编码它。这是一个简单的编码思想。
电话会是这样的
Context.getValueByKey(ContextKeys.MY_OTHER_KEY)
如果您不喜欢string keys类,可以使用enum。尝试将此作为新的分配:)。