C# ASP.NET Core 2.2 MVC中未验证的问题

C# ASP.NET Core 2.2 MVC中未验证的问题,c#,cookies,asp.net-core-mvc,C#,Cookies,Asp.net Core Mvc,我在使用User.Identity.IsAuthenticated时遇到了一个特定问题。 如果我在Chrome中打开一个新选项卡并进入我的环境,例如:https://localhost:5001,它会正常打开并将我重定向到主页(因为我已经登录) 但是,如果我通过链接打开网站,例如:我收到一封电子邮件,上面有链接https://localhost:5001,如果我单击刚才重定向到登录屏幕的链接 但由于我已经登录,正确的方法是重定向到主页,如果我按f5,系统会将我重定向到主页 查看代码中的调试,在我

我在使用
User.Identity.IsAuthenticated
时遇到了一个特定问题。 如果我在Chrome中打开一个新选项卡并进入我的环境,例如:
https://localhost:5001
,它会正常打开并将我重定向到主页(因为我已经登录)

但是,如果我通过链接打开网站,例如:我收到一封电子邮件,上面有链接
https://localhost:5001
,如果我单击刚才重定向到登录屏幕的链接

但由于我已经登录,正确的方法是重定向到主页,如果我按f5,系统会将我重定向到主页

查看代码中的调试,在我的操作中,它声明
User.Identity.IsAuthenticated=false

现在,当我按f5进行调试时,它返回true

我的启动代码是这样的

    services.ConfigureApplicationCookie(options =>
    {
        options.LoginPath = "/Security/Login";
        options.LogoutPath = "/Security/Logout";
        options.AccessDeniedPath = "/Security/AccessDenied";
        options.SlidingExpiration = true;
        options.ExpireTimeSpan = TimeSpan.FromDays(15);

        options.Cookie = new CookieBuilder
        {
            HttpOnly = true,
            Name = ".CustomName",
            Path = "/",
            SameSite = SameSiteMode.Strict,
            SecurePolicy = CookieSecurePolicy.SameAsRequest,
            Expiration = TimeSpan.FromDays(15)
        };
    });

如果将SameSite设置为Strict,则cookie将只在 第一党背景。就用户而言,只有在以下情况下才会发送cookie: cookie的站点与当前在中显示的站点匹配 浏览器的URL栏。当用户在您的站点上时,cookie将 按预期随请求一起发送。但是,在跟踪链接时 进入你的网站,比如从另一个网站或通过朋友的电子邮件, 在该初始请求中,将不发送cookie


改用
SameSiteMode.Lax
。这将允许浏览器包含一个身份验证cookie,其中包含来自不同来源(如邮件)的链接。

您的cookie策略禁止在不属于“同一站点”的情况下发送cookie。我猜这意味着来自国外的链接将不起作用,因为它们不会附加cookie。放松
SameSiteMode.Strict
可能会有所帮助,但会为跨站点请求伪造带来更大的麻烦。