微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core MVC 3.1不久后注销

如何解决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 举报,一经查实,本站将立刻删除。