C# Asp.NETMVC令牌是否可以限制为一次性使用
我在ApicController中生成一个自定义用户令牌,并使用回调链接将其通过电子邮件发送给用户C# Asp.NETMVC令牌是否可以限制为一次性使用,c#,asp.net-mvc,token,C#,Asp.net Mvc,Token,我在ApicController中生成一个自定义用户令牌,并使用回调链接将其通过电子邮件发送给用户 var token = userManager.GenerateUserToken(user.Id, "ConfirmAction"); var callbackUrl = this.Url.Link("Default", new { controller = "AccountController", action = "ActionXYZ", new { userId = user.Id, to
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控制器中使用
var validToken = await userManager.VerifyUserTokenAsync(user.Id, "ConfirmAction", token);
if(validToken)
{
// Can token be cancelled to disallow re-use?
}
有没有一种方法可以防止在不将令牌保存在数据库中的情况下多次使用令牌?例如,特定令牌的某种提前到期?是的,您可以,例如,您希望向用户发送一个用于重置密码的链接,并且您希望用户仅使用该链接一次,首先您需要根据用户单击链接后将要更改的数据创建令牌,例如,如果用户想要更改密码,使用旧密码或上次用户登录时作为令牌的一部分(使用某些安全密钥生成要包含在令牌中的旧密码的哈希盐字符串后),因此,如果用户单击链接并更改密码,则旧令牌将不再有效,因为您会将其有效性与当前密码进行比较(已更改)
如果您需要有关如何创建哈希加密密码的帮助,请访问Stackoverflow是否再次尝试重用同一令牌?是否有效?是的,链接可多次工作长达24小时。然后在24小时后过期。但是,我只希望链接只工作一次。