电子邮件确认错误令牌无效 AspNet 身份
Email Confirmation Error Invalid Token AspNet Identity
我有两个 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)
};
}
来源:
现在来解决我的问题
在 localhost 和 qa 中工作正常。在本地主机的 SSL 上测试也正常。
生产失败(使用 SSL)。从 WCF 生成令牌并在 MVC 中验证失败。
- 在同一个应用程序中生成和验证有效。
这个 invalid token
错误是怎么发生的? web.config
与它有什么关系吗?
找到问题了。
是 IIS 中的应用程序池。我为 WCF 和 MVC 应用程序使用了不同的应用程序池。现在我 将它放在同一个应用程序池中 并且工作正常。
附加信息: 对于那些有同样问题但我的解决方案没有解决问题的人,那么您可能想尝试 machineKey
.
http://gunaatita.com/blog/Invalid-Token-Error-on-Email-Confirmation-in-Aspnet-Identity/1056
PS。在 Whosebug 上 post 之后,我几乎总是自己找到答案。谢谢。
我有两个 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)
};
}
来源:
现在来解决我的问题
在 localhost 和 qa 中工作正常。在本地主机的 SSL 上测试也正常。
生产失败(使用 SSL)。从 WCF 生成令牌并在 MVC 中验证失败。
- 在同一个应用程序中生成和验证有效。
这个 invalid token
错误是怎么发生的? web.config
与它有什么关系吗?
找到问题了。
是 IIS 中的应用程序池。我为 WCF 和 MVC 应用程序使用了不同的应用程序池。现在我 将它放在同一个应用程序池中 并且工作正常。
附加信息: 对于那些有同样问题但我的解决方案没有解决问题的人,那么您可能想尝试 machineKey
.
http://gunaatita.com/blog/Invalid-Token-Error-on-Email-Confirmation-in-Aspnet-Identity/1056
PS。在 Whosebug 上 post 之后,我几乎总是自己找到答案。谢谢。