.NET8 Server App 認證試作

登入程序要點

.NET8 採用並新的框架,不過登入認證大體上的流程與 .NET6 是一致的。

補充 on 2024-5-30

在 NET8 Blazor Web App,HttpContext 只在 page reload 才會更新。

嘗試找到的所有方法:Circuit、Middelware、CookieAuthenticationEvents、IHttpContextAccessor 或 RevalidatingServerAuthenticationStateProvider 都無法偵測 Auth cookie 已被手動強製刪除。將會一直保持在登入狀態直到 page reload 才會刷新(囧)。

參考文章 - ASP.NET Core Blazor 驗證與授權 - 針對錯誤進行疑難排解

針對錯誤進行疑難排解
驗證連線到 SignalR 中樞的使用者

NET8 授權相關文章

使用新的 AddCascadingAuthenticationState() 方式在UI取授權經測試,用<F5>刷新UI時會無效 => 404!這應該是bug。測了無數次發現是客製 CustomAuthenticationStateProvider 在<F5>刷新UI時沒有執行,所以授權不足,然後... 轉到 404 了! (囧) 。不過“正常使用”的話沒有此問題。

在實務上廢除自訂 CustomAuthenticationStateProvider 元件。已採用替代方案了,不過未實在到此範例。

其他差異

差別一:@rendermode。需明確知道該 page 的 interactive render mode。不同 @rendermode

差別二:新版的 razor page 改成 *.razor。也可以有條件的鑲入 blazor component。副檔名與 blazor componnet 一樣,這很容易混亂。

不同 @rendermode 的通訊方法完全不同。

  • Server => SignalR

  • WebAssemply => WebAPI / JSON

  • non-interactive => Form Submit

開發環境

  • 平台: .NET8

  • 框架: Blazor Server App (global)

  • IDE: Visual Studio 2022

  • Auth with cookie

完整原始碼

Last updated