繁体   English   中英

ASP.NET Core 2.2 MVC 中的 IsAuthenticated 问题

[英]Problem with IsAuthenticated in ASP.NET Core 2.2 MVC

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

但是,如果我通过一个链接打开该站点,例如:我收到一个 email 并且它具有链接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 cookies 解释

如果您将 SameSite 设置为 Strict,您的 cookie 将仅在第一方上下文中发送。 在用户方面,只有当 cookie 的站点与浏览器的 URL 栏中当前显示的站点匹配时,才会发送 cookie。 当用户在您的站点上时,cookie 将按预期随请求一起发送。 但是,当通过链接进入您的站点时,例如从另一个站点或通过朋友的 email,在初始请求中不会发送 cookie。

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

暂无
暂无

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

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