【问题标题】:Asp Net Core authentication troublesAsp Net Core 身份验证问题
【发布时间】:2020-04-09 11:09:21
【问题描述】:

我已经用 Angular 制作了 asp net core 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();
}

【问题讨论】:

  • 不记得确切的 .net 核心,但您需要将加密密钥保存在应用程序配置文件中。
  • 我想了想,.Net core 不使用 IIS 的配置文件。
  • 是的,但你可以在 appSetting.json 中使用它

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


【解决方案1】:

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

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

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

或者您可以查看这些链接1,2 以在iis 重置后保持登录状态

【讨论】:

  • 感谢您的回复。我已经测试过这个chages,但它没有帮助:-( IIS重启后仍然需要再次登录
  • @antonad 我更新了我的答案。希望对你有帮助
  • 谢谢,这行得通。非常简单的解决方案,但我错过了。
  • @antonad 祝你好运;)
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 2020-02-24
  • 2021-06-15
  • 2017-09-11
  • 2023-04-01
  • 2019-08-17
  • 1970-01-01
  • 2019-01-24
相关资源
最近更新 更多