繁体   English   中英

ASP.NET 核心标识未在浏览器中保存 cookie

[英]ASP.NET Core Identity not saving cookie in browser

我现在已经搜索了几个小时的解决方案......所以我们在这里 go。 我有 3 个应用程序: 1:API - 在这里我们有身份验证 2:管理员客户端 - 效果很好 2:用户客户端 - 能够登录并获得身份验证......但是在每次请求时,我都会再次获得登录屏幕,就像我没有已通过身份验证(我登录时已通过身份验证)。 此应用程序不会将 cookie 保存到浏览器(管理员会)

Program.cs 中的客户端代码(这是 .net6)在 Admin 和 User 应用程序中是相同的。 唯一的区别是 cookie 名称

    var _authenticationSettings = _serviceProvider.GetService<IAuthenticationSettings>();

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                      .AddCookie(JwtBearerDefaults.AuthenticationScheme,
                        options => {
                            options.LoginPath = _authenticationSettings.LoginPath;
                            options.AccessDeniedPath = _authenticationSettings.AccessDeniedPath;
                            options.Events = new CookieAuthenticationEvents
                            {
                                // Check if JWT needs refreshment 
                                OnValidatePrincipal = RefreshTokenMonitor.ValidateAsync
                            };
                            options.Cookie.Name = "MainAppCookie";
                        }
                      );

我在其他项目中使用过这种方法,它的工作原理应该是……唯一的区别是它是一个 .net5 IIS 项目……现在我在 Kestrel 上运行了 .net6

在此处输入图像描述

知道我在这里做错了什么......

cookie被创建:

在此处输入图像描述

使用这个值(不知道在哪里可以找到 cookie 中的值..

在此处输入图像描述

即使我将 ExpireTimeSpan 设置为 60 分钟,cookie 的有效期也是 30 分钟

在此处输入图像描述

在此处输入图像描述

当我登录到 MainApp 客户端时,这里有 cookie 状态。 上面你可以看到 AdminApp cookie(之前在那里登录过)

在此处输入图像描述

在这里,您在登录时也有 AdminApp cookie 状态..

在此处输入图像描述

我必须承认……这真的很奇怪

好的,经过数小时的故障排除后,我终于找到了错误。 链接中出现错误...不是在调用 URL,而是在调用方法:(

<a href="@_manager.LogOut()" class="menu-link px-5">@_localizer["SIGN_OUT"]</a>

应该:

<a href="@Url.Action("LogOut", "Account")" class="menu-link px-5">@_localizer["SIGN_OUT"]</a>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM