对于你们大多数人来说,这是一个很常见的话题。我正在用 Java 构建一个 webapp,使用 Spring + Spring Security + Hibernate + MySQL + 等...
我正在实施“重置密码”模块。我已经知道流程并拥有所有表格和相应的控制器。我只是想知道,在到处写代码之前,我是否从右脚开始,然后继续改进它。
MySQL表:
PASSWORD_CHANGE_REQUESTS (
TOKEN VARCHAR(126) NOT NULL,
USERNAME VARCHAR(50) NOT NULL,
CREATION_TIME DATETIME NOT NULL,
PRIMARY KEY(TOKEN)
)
我看到一些帖子推荐了 EXPIRE_DATE 字段。是不是真的值得吗?
唯一令牌:
我正在使用 Spring SHA 编码器,其中用户名 + 时间戳作为参数(+ 所需的盐值),它返回字符串,例如:92c303b9740da5959418c32d04b6ec6f4ca61637。
这种方法真的会为 URL生成一个唯一的令牌吗?或者有更好的方法吗?
在 Java 中,时间戳是这样生成的:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy h:mm:ss");
String timestamp = sdf.format(date);