如何解决ASP.NET Core MVC 3.1不久后注销
在解释所面临的问题之前,我需要强调一点,该问题在本地计算机上不会发生。仅在将应用程序部署到AWS(Windows Server + IIS)后才会发生。
该应用程序具有许多具有[Authorize]属性的Web API端点。该应用程序使用Cookie身份验证。 您可以在这里查看此网站:https://saveonclouds.com
在Startup.cs中,我保留了cookie,并给它一个自定义名称“ saveoncloudscookie”。
但是,登录后(通过用户名/密码和Google)大约10分钟后,用户会退出并看到“登录”页面!
由于此问题仅在托管环境中发生,因此对我解释部署可能很有用:
浏览器-> CloudFlare(SSL / TLS)->负载平衡器(AWS)-> EC2(仅一个实例)
在上述部署模型中,SSL证书在负载均衡器上终止,因此AWS EC2通过HTTP而非HTTPS接收流量。
我使用以下代码尝试并保留auth cookie,但它似乎不起作用:
对于Google登录:
services.AddAuthentication()。AddGoogle(options => { options.ClientId = AppSettings.Authentication.Google.ClientId; options.ClientSecret = AppSettings.Authentication.Google.ClientSecret; options.AccessDeniedpath =“ / Accounts / AccessDenied”; options.CorrelationCookie.Expiration = new TimeSpan(1,0); options.Savetokens = true;
options.Events = new OAuthEvents
{
OnAccessDenied = loginFailureHandler =>
{
loginFailureHandler.Response.Redirect("/Accounts/Signin");
loginFailureHandler.HandleResponse();
return Task.Fromresult(0);
},OnTicketReceived = ticket =>
{
ticket.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1);
ticket.Properties.IsPersistent = true;
ticket.Options.Savetokens = true;
return Task.Fromresult(0);
}
};
})
和
services.ConfigureApplicationCookie(option =>
{
option.Cookie.Name = "saveoncloudscookie";
option.Cookie.HttpOnly = true;
option.Cookie.SameSite = SameSiteMode.None;
option.Cookie.MaxAge = new TimeSpan(1,0);
option.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
option.LoginPath = "/Accounts/Signin";
option.AccessDeniedpath = "/Accounts/AccessDenied";
option.ExpireTimeSpan = TimeSpan.FromHours(authConfig.CookieExpirationHours);
option.SlidingExpiration = true;
});
我想念什么吗?
解决方法
问题是发生了EF Core异常,该异常打破了工作进程,因此应用程序必须重新启动并重新进行身份验证。这是如此安静地发生,我只能通过在Visual Studio中将日志记录级别设置为“调试”并在“输出”窗口中读取每一行文本来设法找到它!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。