알다시피,이 질문은 여러 번 묻지 만 문제는 조금 다릅니다.ASP.NET ID 2 전자 메일 확인 잘못된 토큰
나는 GenerateEmailConfirmationTokenAsync
과 ConfirmEmailAsync
방법으로 이상한 문제가 있습니다.
전자 메일을 보내기 전에 HttpUtility.UrlEncode
및 HttpUtility.UrlDecode
메서드를 올바르게 사용하고 있습니다.
이상한 점은 사용자 생성과 메일 수신 후 오류를 재현 할 수 없다는 것입니다. 그러나 같은 환경에서 10 명 중 3 명이 잘못된 토큰 문제를 신고합니다.
좀 더 검색 한 결과 IIS가 다시 시작되거나 변경 사항이 게시 된 후에 변경 될 수있는 컴퓨터 키로 인해 발생할 수 있음을 발견했습니다. 따라서 동일한 문제를 해결하기 위해 Machine Key를 생성하고 web.config에 보관했지만 여전히 문제가있는 것으로 보입니다.
나는 Azure App Service에서 이것을 호스팅하고 있습니다.
그 외 무엇이 잘못 될지 더 이상 생각하지 않으십니까?
업데이트 : 내가 당신을 위해 여기에 코드를 추가 해요 사람은
string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = new Uri(string.Format("{0}?userId={1}&code={2}", ConfigurationManager.AppSettings["EmailConfirmationURL"], user.Id, HttpUtility.UrlEncode(code)));
string emailTemplate = MailTemplates.UserRegistrationEmailTemplate(FirstName, CompanyName, callbackUrl);
await CustomEmail.SendEmail(new List<string> { user.Email }, "Confirm your account", emailTemplate);
을 검토하고
IdentityResult result = await UserManager.ConfirmEmailAsync(userId, HttpUtility.UrlDecode(code));
사용자가 토큰을 제출하는 데 너무 오래 걸리면 제출되기 전에 토큰이 만료 될 수 있습니다. 토큰은 무효화되기 전에 사용해야하는 수명이 있습니다. – Nkosi
토큰을 올바르게 인코딩하고 있다고 확신하는 동안. 당신이 한 일을 보여주십시오. 코드에 대해 더 많은 관심을 기울일 수 있다면 어떤 문제라도 발견 할 수 있습니다. – Nkosi
당신은 이것을 보았습니까? http : //tech.trailmax.info/2015/05/asp-net-identity-invalid-token-for-password-reset-or-email-confirm/사용자를위한 보안 스탬프를 언급하지 않았습니다. – trailmax