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
可能会有所帮助,但会为跨站点请求伪造带来更大的麻烦。