c# - 可以将 Asp.Net MVC token 限制为一次性使用吗

标签 c# asp.net-mvc token

我在 ApiController 中生成自定义用户 token ,并使用回调链接将其通过电子邮件发送给用户

var token = userManager.GenerateUserToken(user.Id, "ConfirmAction");
var callbackUrl = this.Url.Link("Default", new { controller = "AccountController", action = "ActionXYZ", new { userId = user.Id, token = token} });

当用户单击我在 MVC Controller 中处理的链接时

var validToken = await userManager.VerifyUserTokenAsync(user.Id, "ConfirmAction", token);
if(validToken)
{
  // Can token be cancelled to disallow re-use?

}

有没有办法在不将 token 保存在数据库中的情况下防止 token 被多次使用?例如,特定 token 的某种提前到期?

最佳答案

是的,您可以,例如,您想要向用户发送一个密码重置链接,并且您希望用户仅使用该链接一次,首先您需要创建一个基于数据的 token ,该 token 将在用户单击链接,例如,如果用户想要更改密码,请使用旧密码或上次用户登录作为 token 的一部分(在使用一些安全 key 生成旧密码的散列加盐字符串后,将包含在 token ),因此,如果用户单击链接并更改了密码,则旧 token 将不再有效,因为您会将其有效性与当前密码(已更改)进行比较
check this question如果您需要有关如何创建散列加盐密码的帮助,请访问 Stackoverflow

关于c# - 可以将 Asp.Net MVC token 限制为一次性使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115954/

相关文章:

c# - 是否有可能 Observable.Buffer 在时间以外的东西上

c# - 具有使用 SSL 的上下文的 UserPrincipal

c# - 如何在 C# Web APP 中获取当前 Windows 登录名?

c# - 这个静态字典字段线程安全吗?

asp.net-mvc - ASP.NET MVC : Is a helper allowed to grab data?

c# - 在 C# MVC 的 Jquery 中使用 CSS 文件

google-cloud-messaging - 何时调用InstanceIDListenerService以及如何对其进行测试?

javascript - JWT:在多域级别处理 token 身份验证

c# - MVC3 Controller 如何检索 HTTPPOST 参数?

java - 在java中将文件中的一行拆分为标记