gpt4 book ai didi

meteor :在提交之前检测 token 是否已过期?

转载 作者:行者123 更新时间:2023-12-05 05:20:32 24 4
gpt4 key购买 nike

我正在 Meteor 中构建一个重置密码屏幕,我想在我要求用户填写表单(密码 + 确认密码)并单击提交按钮之前检测重置密码 token 是否已过期。这似乎是更好的用户体验。

但是,我似乎无法在 Meteor 文档中找到任何允许您传入 token 并检查它是否仍然有效的方法或助手。我唯一能找到的是一条错误消息,提示用户提交后 token 已过期。当我们从一开始就知道它行不通时,花时间填写表格可能会让客户感到厌烦。然后他们必须去获取一个新链接,然后重新填写表格。

在 Meteor 中没有更好的方法来做到这一点吗?

最佳答案

检查 token 是否仍然有效相当容易。

你可以按照以下方式做一些事情:

Meteor.methods({
checkResetToken(token) {
check(token, String);

const user = Meteor.users.findOne({
"services.password.reset.token": token});
if (!user) { // never existed or already been used
throw new Meteor.Error(403, "Token expired");
}

const when = user.services.password.reset.when;
const reason = user.services.password.reset.reason;
let tokenLifetimeMs = Accounts._getPasswordResetTokenLifetimeMs();
if (reason === "enroll") {
tokenLifetimeMs = Accounts._getPasswordEnrollTokenLifetimeMs();
}
const currentTimeMs = Date.now();
if ((currentTimeMs - when) > tokenLifetimeMs) { // timeout
throw new Meteor.Error(403, "Token expired");
}

// you can return some of the user's details to further improve the UX.
}
});

改编自 accounts-password 包的代码。

然后,在您的客户端 Hook 中使用它来确定 token 是否仍然有效,并可能从服务器获取一些用户的详细信息(例如,它是注册 token 还是用户的姓名/电子邮件)显示更个性化的 View 。

请注意,user 包含所有 secret 字段,因此不要将其全部返回给客户端。

关于 meteor :在提交之前检测 token 是否已过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44362008/

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