分享主軸
所以身分驗證與授權是兩件事情
ASP.NET Core Identity 預設使用 Cookie 來管理身份驗證(Cookie本身是無狀態的)
用戶在登入頁面輸入其帳號和密碼
使用 Identity 框架內的方法來驗證用戶提交的資訊是否正確
如果正確,則認證成功,生成身份驗證 Cookie
(會生成一個身份驗證 Cookie,該 Cookie 包含用戶的身份資訊)
這個 Cookie 會附加到 HTTP 回應中,並發送到用戶的瀏覽器
當控制器方法完成並返回結果(例如 RedirectToAction),HTTP 回應會被發送到用戶的瀏覽器,包含身份驗證 Cookie (瀏覽器會保存這個身份驗證 Cookie,並在後續的每次請求中自動附加該 Cookie)
建立專案時,可以選擇驗證類行為個別帳戶(它會使用 ASP.NET Core Identity 來管理用戶帳戶和身份驗證)
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER_NAME;Database=YOUR_DATABASE_NAME;User Id=YOUR_USERNAME;Password=YOUR_PASSWORD;"
}
public class ApplicationDbContext : IdentityDbContext<IdentityUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Add-Migration InitialCreate
Update-Database
此時會看到資料庫內有產出的 Identity 所預設生成的資料表
頁面(以登入為示範)
若沒有特別設定,比如 Cookie 資訊,則會以預設
ExpireTimeSpan
預設 : 14 天
說明:這是身份驗證 Cookie 的過期時間
SlidingExpiration
預設:true
說明:啟用滑動過期時間。表示每次用戶操作頁面時,過期時間將延長到設定的 ExpireTimeSpan
例如,如果 ExpireTimeSpan 設為 14 天,則每次用戶活動都會將過期時間重置,變成新的 14 天
LoginPath
預設:"/Account/Login"
說明:用戶需要登入時重新指向的路徑
AccessDeniedPath
預設:"/Account/AccessDenied"
說明:這是用戶被拒絕訪問某資源時重定向的路徑。如果不設定,系統將使用這個預設路徑
Cookie.HttpOnly
預設:true
說明:設置 Cookie 為 HttpOnly,表示 Cookie 不能被客戶端腳本(如 JavaScript)訪問,增加了安全性
防止 : 跨站腳本攻擊 (XSS)
Cookie.SecurePolicy
預設:CookieSecurePolicy.SameAsRequest
說明:這個選項決定 Cookie 是否僅在 HTTPS 上傳輸
附上參考教學文章說明
https://github.com/ThreeMammals/Ocelot/issues/1002
簡單統整今日重點
今日結語
初步認識 Identity 後,通過使用 Cookie 進行身份驗證和授權,可以更深入地理解 ASP.NET Core 內建的一套 Identity 機制。這套機制不僅提供了強大的身份驗證功能,還能夠靈活地管理用戶的授權和角色
一點一點認識 ASP .NET Core 有關的知識,加油!
明日繼續努力 ~
參考文章
https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?view=aspnetcore-8.0