1

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

4

3 回答 3

2

在 Java 中,doingnew 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

于 2012-10-12T23:56:30.090 回答
1

要验证电子邮件地址,您可以参考此链接

http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

验证密码:您只需要从某些数据库或其他安全框架中检索存储的用户密码,并根据用户所做的输入进行验证。

于 2012-10-13T01:30:22.890 回答
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;
}

}

如果你打算只使用这个类的一个实例,你可以使用单例模式:

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

}

于 2012-10-13T00:06:33.557 回答