C#: Использование Microsoft.AspNetCore.Identity Пароль для сброса пароля истекает после перезапуска веб-приложения - PullRequest
0 голосов
/ 17 марта 2020

Я не думаю, что это проблема кода, поскольку я думаю, что она относится к жизненному циклу того, как ключи генерируются (а затем восстанавливаются); поэтому я не включил код.

Мы использовали Microsoft.AspNetCore.Identity.UserManager с настройкой services.AddAuthentication().AddJwtBearer(). У нас есть AuthenticationController, который выдает забытое пароль по электронной почте со ссылкой и токеном.

Вообще говоря, все отлично работает, и токен истекает в соответствии с настройкой. Единственным исключением является перезапуск веб-сервера (например, при развертывании обновлений в веб-приложении), а затем любые забытые пароли или электронные письма о регистрации новых пользователей, которые были отправлены до перезапуска, теперь недействительны.

Мой Предполагается, что любой внутренний ключ, используемый службой, генерируется при запуске, и токен больше не будет совпадать после перезапуска. Это верно? Если да, есть ли способ сохранить тот же ключ после перезапуска приложения, чтобы избежать этой проблемы?

Мой Startup класс:

services.AddAuthentication()
  .AddJwtBearer(cfg =>
  {
    cfg.RequireHttpsMetadata = false;
    cfg.SaveToken = true;

    cfg.TokenValidationParameters = new TokenValidationParameters()
    {
      ValidIssuer = Configuration["Tokens:Issuer"],
      ValidAudience = Configuration["Tokens:Issuer"],
      IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"]))
    };
  });
...