电子邮件确认错误令牌AspNet标识无效

时间:2015-06-03 09:03:46

标签: c# asp.net-mvc wcf asp.net-identity-2 confirmation-email

我有两个Web应用程序,WCF和MVC共享相同的数据库。我使用的是Aspnet Identity 2.0

注册新用户时,会创建确认令牌并向用户发送电子邮件。创建令牌,发送电子邮件主要在WCF中完成,验证在MVC应用程序中完成。

var code = UserManager.GenerateEmailConfirmationToken(user.Id);
string.Format("{0}/Account/ConfirmEmail?userId={1}&code={2}", WebsiteUrl, 
   HttpUtility.UrlEncode(user.Id), HttpUtility.UrlEncode(codeId));

我正在使用相同的数据保护提供程序

在WCF中

var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication");
UserManager.UserTokenProvider =
                new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider<ApplicationUser>(
                    provider.Create("UserToken"))
                {
                    TokenLifespan = TimeSpan.FromDays(7)
                };

在MVC中

var dataProtectionProvider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("MyTestApplication");
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("UserToken"))
                {
                    TokenLifespan = TimeSpan.FromDays(7)
                };
            }

来源:Make ASP.NET Identity 2.0 Email confirm token work for WCF and MVC

现在问题

  1. 在localhost和qa中正常工作。在localhost上对SSL进行了测试。

  2. 生产失败(使用SSL)。从WCF生成令牌并在MVC中验证失败。

  3. 在同一个应用程序中生成和验证。
  4. 如何发生此invalid token错误? web.config有什么关系吗?

1 个答案:

答案 0 :(得分:2)

发现问题。

IIS中的应用程序池。我正在为WCF和MVC应用程序使用不同的应用程序池。现在我将它放在同一个应用程序池中并且工作正常。

其他信息:对于遇到相同问题并且我的解决方案无法解决问题的人,您可能需要尝试machineKey

http://gunaatita.com/blog/Invalid-Token-Error-on-Email-Confirmation-in-Aspnet-Identity/1056

PS。我在stackoverflow上发布后几乎总能找到答案。谢谢。

相关问题