У меня есть два веб-приложения, WCF и MVC, которые используют одну и ту же базу данных. Я использую Aspnet Identity 2.0Ошибка подтверждения электронной почты Недействительный токен Идентификатор AspNet
При регистрации нового пользователя он создает токен подтверждения и отправляет электронное письмо пользователю. Создание токена, отправка электронной почты в основном выполняется в 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
Теперь к моей проблеме
отлично работает в локальный и ца. Протестировано нормально для SSL в localhost.
Сбой при производстве (используется SSL). Генерирование токена из WCF и проверка в MVC завершается с ошибкой.
- Создание и проверка в тех же прикладных работах.
Как это invalid token
ошибка возникает? Имеет web.config
что-то общее?
Спасибо! «HttpUtility.UrlEncode» сделал трюк для меня, уже настроенный machineKey. Для других о machineKey это также хороший ответ, который помог мне создать: http://stackoverflow.com/questions/23455579/generating-reset-password-token-does-not-work-in-azure-website/23661872 # 23661872 – CularBytes