我采取的基于Spring Java项目中的密码恢复功能。 这是我对于方法论
- 用户点击忘记密码链接
- 在下一屏,用户输入已被用来注册他/她的帐户,他的电子邮件地址
- 系统会生成一个
UUID
标记,并将其与输入的电子邮件地址的用户一起保存在数据库中的表。 此外,到期时间被保存在数据库中的Timestamp
值 - 包括一个链接重设密码的电子邮件发送给用户。 (UUID令牌被包括在电子邮件)
- 当用户点击电子邮件中的链接,他/她将被重定向到的密码重置页。
- 在该页面中,用户的电子邮件地址会自动通过系统设置的文本字段
UUID
令牌。 在这里,我需要检查的到期时间是否到期。 为此,我需要比较Timestamp value
的当前时间与Timestamp value
的是从数据库中使用所采取的到期时间UUID token.
我用这个代码段来检索timestamp
的到期时间值。
@Override
public String checkValidityOfToken(UUID token) {
System.out.println("INFO:token in Login Dao Impl = "+token);
java.sql.Timestamp ex_time;
try{
String sql = "SELECT expiray_time FROM recover_password WHERE token = "+token;
ex_time = getJdbcTemplate().queryForObject(sql, java.sql.Timestamp);
System.out.println("INFO: first total = "+ex_time);
}catch(Exception exx){
System.out.println("error while taking saved time count for a matching token "+exx);
}
}
虽然java.sql.Timestamp
的queryForObject()
是由Eclipse的建议时,我打ctrl+space
,Eclipse中显示有错误。 这是为什么。 什么是此任务的正确的代码段。
然后我用这个,
String sql = "SELECT expiray_time FROM recover_password WHERE token = ?";
ex_time = getJdbcTemplate().queryForObject( sql, new Object[] { token }, java.sql.Timestamp);
在这种情况下,同样java.sql.Timestamp
无法识别。 其包括上述方法中的类扩展`SimpleJdbcDaoSupport。
要么
难道我用检查密码重置链接的有效性的错误的方式? 如果是的话是什么来实现它的好办法?