我正在使用Java Mail API:
PasswordAuthentication valid = new PasswordAuthentication(txtEmail.getText(),
txtPassword.getText());
if (valid != null) {
lblInvalid.setText("Correct information!");
} else {
lblInvalid.setText("Invalid username or password!");
}
我想要它做什么,我希望用户使用他们的gmail用户名和密码登录。我想检查该电子邮件用户名和密码是否是真正的Gmail登录信息。如何检查输入的电子邮件和密码是否为用户gmail帐户。
答案 0 :(得分:2)
在Java中,执行new Anything()
将永远不会返回null。
此外,此类似乎只是一个占位符数据结构,由JDK的其他部分使用。它本质上没有进行验证。
验证电子邮件地址通常使用正则表达式完成,并保持简单。然后,您应该向用户发送确认消息,以验证他们的电子邮件地址(如果这对您很重要)。
也可以使用正则表达式验证密码的正确形式。
<强>更新强>
仔细查看您尝试发出的错误消息,看起来您想要自己处理身份验证。有很多方法可以做到这一点,但一个非常简单的原型解决方案就像:
// create a static mapping of user/passwords:
private static Map<String, String> logins = new HashMap<String, String>();
然后在你的处理程序中:
if (txtPassword.getText().equals(logins.get(txtEmail.getText()))) {
lblInvalid.setText("Correct information!");
} else {
lblInvalid.setText("Invalid username or password!");
}
对于您将要在制作中使用的内容,我强烈推荐Spring Security。
答案 1 :(得分:1)
要验证电子邮件地址,您可以参考此链接
http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/
验证密码:您只需要从某个数据库或其他安全框架中检索用户的存储密码,并根据用户的输入进行验证。
答案 2 :(得分:0)
这是一个非常大的话题。
身份验证,授权和验证是三个不同的事情(但非常相关)。
如果您是初学者并且您只是尝试使用硬编码凭据进行模拟身份验证,则可以通过以下方式改进代码:
public class Authenticator {
public boolean authenticateWithCredentials(String email, String password) {
boolean areValidCredentials = false;
//Validate credentials here with database or hardcoded
if(email.equals("my_email@emailprovider.com") && password.equals("mypassword")) {
areValidCredentials = true;
}
return areValidCredentials;
}
}
如果你打算只使用这个类的一个实例,你可以使用Singleton模式:
public class Authenticator {
//Singleton pattern
private static Authenticator instance;
public static Authenticator getInstance() {
if(instance == null) {
instance = new Authenticator();
}
return instance;
}
private Authenticator() {
//Block creation of Authenticator instances
}
public boolean authenticateWithCredentials(String email, String password) {
boolean areValidCredentials = false;
//Validate credentials here with database or hardcoded
if(email.equals("my_email@emailprovider.com") && password.equals("mypassword")) {
areValidCredentials = true;
}
return areValidCredentials;
}
}