Я не думаю, что это проблема кода, поскольку я думаю, что она относится к жизненному циклу того, как ключи генерируются (а затем восстанавливаются); поэтому я не включил код.
Мы использовали 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"]))
};
});