如何使用Java Mail API验证电子邮件和密码?

时间:2012-10-12 23:45:08

标签: java api email passwords

我正在使用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帐户。

3 个答案:

答案 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;
}

}