gpt4 book ai didi

java - 如何检查密码是否超过一年?

转载 作者:行者123 更新时间:2023-11-29 05:30:47 24 4
gpt4 key购买 nike

我正在尝试在 MVC 中使用 JSP 开发用户登录/注册。该程序将为用户进行简单的登录、创建和更新。在模型部分,我应该根据以下标准返回 0、1、2、3。

0 如果用户验证成功1 如果用户验证成功但密码较弱2 如果用户验证成功但密码已过期(超过 1 年)3 如果用户未通过验证

这是我到目前为止完成的验证方法的代码,

public int Validate() {

try {
Class.forName(driverName).newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {

Connection connection = DriverManager.getConnection(dbURL,
username, password);

String verifyQuery = "SELECT COUNT(email), dateSet, strength FROM users WHERE email=? AND hashPassword=SHA2(CONCAT(?, salt), 256)";
PreparedStatement verify = connection.prepareStatement(verifyQuery);

verify.setString(1, email);
verify.setString(2, pass);
ResultSet verified = verify.executeQuery();
while (verified.next()) {
if (verified.getInt(1) == 1) {
email_db = verified.getString(2);
pass_db = verified.getString(3);
date = verified.getDate(5);
strength = verified.getString(6);

}
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

if (email_db.equals(email) && pass_db.equals(pass)) {
status = 0;
}
if (email_db.equals(email) && pass_db.equals(pass)
&& strength.equals("weak")) {
status = 1;
}
if (email_db.equals(email) && pass_db.equals(pass) && date> ){

}
return status;
}

我对日期部分感到困惑,有什么建议吗?我应该为日期部分编写一个新方法吗?

最佳答案

使用纯 Java,您可以使用 java.util.Calendarjava.util.Date 类实现此目的。这是一个函数的代码示例,该函数使用当前日期时间检查它是否已经过了一年

public boolean hasPassedAYear(Date date) {
long currentDate = Calendar.getInstance().getTimeInMillis();
long dateToEval = date.getTime();
// 1000 => milliseconds to seconds
// 60 => seconds to minutes
// 60 => minutes to hours
// 24 => hours to days
long days = (currentDate - dateToEval) / (1000 * 60 * 60 * 24);
return days >= 365;
}

不过,如果你想要一个好的代码(像每个人一样),你应该使用 Joda Time提供更好的日期/时间处理。这将是相同的功能,但使用 Joda 时间库:

public boolean hasPassedAYear(Date date) {
DateTime currentDate = new DateTime();
DateTime dateToEval = new DateTime(date);
Interval interval = new Interval(dateToEval, currentDate);
return interval.toPeriod().getYears() >= 1;
}

选择哪种方法由您决定。恕我直言,为了便于阅读、理解和维护,我会将代码与 Joda Time 一起使用。

关于java - 如何检查密码是否超过一年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com