【发布时间】:2014-09-26 12:40:41
【问题描述】:
我最近将 Asp.net identity 1.0 迁移到 2.0 。我正在尝试使用以下方法验证电子邮件验证码。但我收到“无效令牌”错误消息。
public async Task<HttpResponseMessage> ConfirmEmail(string userName, string code)
{
ApplicationUser user = UserManager.FindByName(userName);
var result = await UserManager.ConfirmEmailAsync(user.Id, code);
return Request.CreateResponse(HttpStatusCode.OK, result);
}
使用以下代码生成电子邮件验证令牌(如果我在生成令牌后立即调用 ConfirmEmailAsyc,则工作正常)。但是当我使用不同的方法调用时会出错
public async Task<HttpResponseMessage> GetEmailConfirmationCode(string userName)
{
ApplicationUser user = UserManager.FindByName(userName);
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
//var result = await UserManager.ConfirmEmailAsync(user.Id, code);
return Request.CreateResponse(HttpStatusCode.OK, code);
}
请帮忙
【问题讨论】:
-
你找到答案了吗?我整天都在做这件事,而且它似乎确实有效。
-
嗨,它现在正在工作.. 这是因为我的疏忽。在对验证令牌进行 url 编码和解码后,它就可以工作了。因为我在令牌中有一些加号(+)
-
Kumar,你能分享一下你是怎么解决这个问题的吗?
-
@PitDigger - 一个简单的修复方法是使用 Replace(" ","+");
-
在我的情况下(Asp.Net Core 3.0),脚手架页面似乎引入了这个错误。请在此处查看我的answer。
标签: asp.net-mvc asp.net-web-api asp.net-identity