簡體   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