Почему мой токен подтверждения электронной почты недействителен - PullRequest
0 голосов
/ 12 апреля 2020
[HttpGet("confirm/{userId}/{token}")]
public async Task<IActionResult> ConfirmEmail(string userId, string token)
{
    User user = _userService.GetById(userId);
    IdentityResult result = await _userManager.
    ConfirmEmailAsync(user, HttpUtility.UrlDecode(token));
    if (result.Succeeded)
    {
        return Ok("Email confirmed successfully!");
    }
    else
    {
        ViewBag.Message = "Error while confirming your email!";
        return SignOut();
    }
}

Таким образом, мой токен недействителен в результате идентификации. Результат. Почему это так и как я могу решить это? Я думаю, что это связано с тем, что токен отсутствует в базе данных. Я использую asp. net ядро.

1 Ответ

0 голосов
/ 12 апреля 2020

Срок действия вашего токена, возможно, истек.

Вы можете создать такой класс, чтобы создать пользовательский поставщик токенов и установить срок действия

public class CustomEmailConfirmationTokenProvider<TUser> : DataProtectorTokenProvider<TUser> where TUser : class
{
    public CustomEmailConfirmationTokenProvider(IDataProtectionProvider dataProtectionProvider,
            IOptions<EmailConfirmationTokenProviderOptions> options) 
            : base(dataProtectionProvider, options)
    {
    }
}
public class EmailConfirmationTokenProviderOptions : DataProtectionTokenProviderOptions
{
    public EmailConfirmationTokenProviderOptions()
    {
        Name = "EmailDataProtectorTokenProvider";
        TokenLifespan = TimeSpan.FromDays(1);
    }
}

, а затем зарегистрировать этот класс после services.AddIdentity метода, например this

services.AddIdentity<IdentityUser, IdentityRole>(identityOptions =>
            {
                 //DoSomething
            })
            .AddTokenProvider<CustomEmailConfirmationTokenProvider<IdentityUser>>("EmailDataProtectorTokenProvider");

Срок действия этого токена истекает через один день

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...