iT邦幫忙

1

有關 C# Net 6 Identity 登出驗證機制

  • 分享至 

  • xImage

我研究Identity登入驗證機制似乎預設是使用Cookie
查了很多方向始終解決不了
https://stackoverflow.com/questions/77799783/asp-net-core-6-session-timeout-is-not-working
有關應用程式集區的閒置時間也設定過了...


我登入時使用內建的登入方法
RefreshSignInAsync()

startup有關驗證Cookie的設置:

//ConfigureServices部分
services.ConfigureApplicationCookie(options =>
{   
    options.Cookie.HttpOnly = true;
    options.ExpireTimeSpan = TimeSpan.FromMinutes(60);

    options.LoginPath = "/Account/Signature";   
    options.SlidingExpiration = true;
});


//Configure部分
app.UseSession();

app.UseAuthentication();
app.UseAuthorization();

在沒有任何登出功能的情況下,照理說我每一次刷新頁面,應該都是60分後才會登出吧?

但我測試

  1. 登入
  2. 經過30分鐘
  3. 刷新頁面
  4. 等待50分鐘
  5. 刷新頁面,結果:被登出

不知道有沒有熟悉這方面的大大可以解釋一下他的機制到底怎麼運作...
如果是使用Session 其實我也有設定Timeout為60分....被搞得好亂啊

感謝大大

CCCCC iT邦新手 3 級 ‧ 2024-09-09 13:32:55 檢舉
預設失效時間
我記得
cookie 30分鐘
session 是 20 分鐘
--------------------
恕我沒有看清楚問題 抱歉
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Mars聖聖
iT邦新手 5 級 ‧ 2024-09-29 17:12:27

Identity登入驗證機制似乎預設是使用Cookie 這句話是正確的

我理解它的原理是,當使用 Identity 內的方法去驗證身分時 :

  1. 使用者輸入帳號和密碼,並提交請求。
  2. 在控制器中,使用 Identity 內的方法去驗證用戶身分
  3. 如果驗證成功,Identity 方法會生成一個身份驗證 Cookie
  4. 這個 Cookie 會自動附加到當前的 HTTP 中
  5. 當控制器方法完成並返回結果(例如 RedirectToAction),HTTP 回應會被發送到用戶的瀏覽器,包含身份驗證 Cookie

依照你的例子,確實要重置時間,但結果沒有
可以確認應用程式集區的閒置時間不能設置比 Cookie 短

可以測試方式 :

  1. 到瀏覽器上的 Application -> Cookies -> 站台網址 -> 內會有 Identity.Application
    然後查看有個欄位 Expires,會顯示過期時間,每當頁面上有任何動作或重整,這時間就會重置
    (但請注意,請使用清除快取的方式去做測試)
  2. 可以在應用程式內抓取每一次請求時候,Cookie 的過期時間,顯示在log內

你可以試試看這種方法去抓過期時間,釐清檢查

希望有幫助到你 ~

我要發表回答

立即登入回答