Asp Net Core 身份验证问题
Posted
技术标签:
【中文标题】Asp Net Core 身份验证问题【英文标题】:Asp Net Core authentication troubles 【发布时间】: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 中使用它 【参考方案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 祝你好运;)以上是关于Asp Net Core 身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章