ASP Net Core身份验证问题

时间:2020-04-09 11:09:21

标签: c# asp.net-mvc authentication asp.net-core

我已经用Angular制作了ASP网络核心Web应用程序。它使用基于标准网络核心身份验证机制的基于cookie的身份验证。一切正常,直到IIS重新启动(回收)。重新启动应用程序后,所有用户均未经身份验证,需要重新登录。

也许有人知道应该怎么做才能使存储在cookie中的信息在几天内是实际的,而不取决于应用程序是否重新启动。

这是一段代码

public void ConfigureServices(IServiceCollection services)
{
  services.AddDbContext<MyAppContext>(options => options.UseMySql(connectionString));
  services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
  {
    options.User.RequireUniqueEmail = true;
    options.SignIn.RequireConfirmedEmail = true;
  })
  .AddEntityFrameworkStores<MyAppContext>()
  .AddDefaultTokenProviders();

  services.AddAuthorization();
  services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
       .AddCookie(options =>
       {
          options.SlidingExpiration = true;
          options.ExpireTimeSpan = System.TimeSpan.FromDays(7);
          options.LoginPath = $"/Identity/Login";
          options.LogoutPath = $"/Identity/Logout";
          options.Cookie.IsEssential = true;
       });
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseSpaStaticFiles();

    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();
}

1 个答案:

答案 0 :(得分:0)

Asp.Net Core使用Data Protection机制来生成临时encryption keys。并且随着服务器或IIS的重新启动,这些密钥将丢失并且re-generated

为了使用于加密Web应用程序信息的密钥永久存储并且在服务器重新启动时不会丢失,您可以转到Application pool中的IIS设置并将Load user profile设置为{{1 }}

enter image description here

在这种情况下,密钥将永久存储在应用程序True的用户配置文件文件夹中,并通过Windows application pool机制进行加密。

或者您可以在DPAPI重置后检查这些链接12以保持登录状态