關(guān)于我們
書單推薦
新書推薦
|
深入淺出 ASP.NET Core
本書是一本系統(tǒng)地介紹ASP.NET Core、Entity Framework Core以及ASP.NET Core Identity框架技術(shù)的入門圖書,旨在幫助讀者循序漸進地了解和掌握ASP.NET Core。本書使用ASP.NET Core從零開始搭建一個實際的項目。從基本的控制臺應(yīng)用程序開始,介紹ASP.NET Core基本的啟動流程,涵蓋ASP.NET Core框架中各個技術(shù)的實際應(yīng)用。同時,本書也會介紹一些ASP.NET Core的高級概念。在本書中,我們會開發(fā)一個學(xué)校管理系統(tǒng),其中包含清晰的操作步驟和大量的實際代碼,以幫助讀者學(xué)以致用,將ASP.NET Core的知識運用到實際的項目開發(fā)當中,最后我們會將開發(fā)的項目部署到生產(chǎn)環(huán)境中。通過閱讀本書,讀者將掌握使用ASP.NET Core開發(fā)Web應(yīng)用程序的方法,并能夠在對新項目進行技術(shù)選型時做出戰(zhàn)略決策。
本書適合有一定C# 編程經(jīng)驗和HTML、JavaScript基礎(chǔ),并對ASP.NET Core感興趣的讀者閱讀,也可以作為高等院校相關(guān)專業(yè)的教學(xué)用書和培訓(xùn)學(xué)校的教材。
1.針對.NET Core 3.1講解;
2.提供完整源代碼下載且代碼可復(fù)用;
3.本書附送免費視頻資源,供讀者配合圖書學(xué)習(xí);
4.本書針對一個完整項目進行開發(fā),而不是只有零散的代碼段;
5.案例豐富、實用,采用了流行框架中的設(shè)計模式及實用技術(shù);
6.具有完整的權(quán)限功能,統(tǒng)一處理攔截異常、錯誤頁面及日志信息。
經(jīng)過幾年的發(fā)展,ASP.NET Core 已趨于穩(wěn)定,社區(qū)生態(tài)比較完善。在技術(shù)日新月異的今天,我們需要不斷學(xué)習(xí),并在學(xué)習(xí)中不斷成長。本書由淺入深地講解 ASP.NET Core,如果你想通過學(xué)習(xí) ASP.NET Core 來獲得更多的機會,那么我推薦本書,在學(xué)習(xí) ASP.NET Core 的過程中它可以給予我們啟發(fā)和幫助。
——微軟MVP 李志強 (曉晨master)
ASP.NET Core已成為微軟跨平臺開發(fā)的利器。本書基于ASP.NET Core 3.1版本,由淺入深地介紹了如何從頭開始構(gòu)建ASP.NET Core應(yīng)用,內(nèi)容詳實,通俗易懂,非常適合.NET開發(fā)者學(xué)習(xí)參考。
—— 微軟MVP 閆曉迪
我一直認為微軟官方文檔是入門學(xué)習(xí)最好的資料,但在閱讀了梁桐銘的書稿后,我認為他寫的這本書更加適合ASP.NET Core初學(xué)者參考閱讀,從對.NET的歷史回顧到對ASP.NET Core各組件由淺入深的講解,都是他學(xué)習(xí)心得的真心傳授。
——深圳市友浩達科技有限公司 CEO、微軟MVP 張善友
即便ASP.NET Core從2016年首發(fā)到現(xiàn)在已經(jīng)過去4年,但其在開發(fā)者市場中的占比仍然不高。一方面是因為ASP.NET Core技術(shù)的主要陣地其實依然是以企業(yè)信息化為主的傳統(tǒng)企業(yè)級應(yīng)用層面,考慮到成本等綜合因素,這些企業(yè)無法適時地更新自己的技術(shù);另一方面是因為培養(yǎng)能夠熟練駕馭ASP.NET Core技術(shù)的年輕開發(fā)者的速度,趕不上企業(yè)飛速發(fā)展的需要。即便官方文檔很齊全,但系統(tǒng)教程的缺乏,使開發(fā)者或企業(yè)無法從ASP.NET Core的社區(qū)資源中受益。這本書有望成為初級和中級ASP.NET Core開發(fā)者的精神食糧。根據(jù)作者介紹的詳細步驟,開發(fā)者能夠快速成長為合格的新一代ASP.NET Core開發(fā)者。本書作者是ASP.NET Core技術(shù)的先行者,早年在領(lǐng)域驅(qū)動設(shè)計等諸多社區(qū)貢獻了大量學(xué)習(xí)資源,也在網(wǎng)上開設(shè)了ASP.NET Core在線課程,而這本書也是他過去若干年經(jīng)驗積累的結(jié)晶。
——深圳敢為軟件研發(fā)負責(zé)人、長沙.NET技術(shù)社區(qū)組織者 鄒溪源
作者在本書的課程管理系統(tǒng)中融入了他積累多年的 ASP.NET Core 實踐經(jīng)驗,以此為主線層層深入,對 ASP.NET Core 的各項重要功能進行了充分的講解和演示。同時,書中還加入了對部分框架源碼的分析解讀,能更好地幫助我們掌握程序的編寫技巧。相信無論你是初學(xué)者,還是具有一定基礎(chǔ)的開發(fā)者,本書都是一本可以讓你全面學(xué)習(xí) ASP.NET Core,并且快速運用到實踐中的佳作!
——盛派網(wǎng)絡(luò)創(chuàng)始人、微軟 RD / MVP 蘇震巍
梁桐銘,微軟最有價值專家、Microsoft AI Open Hack教練、Microsoft Tech Summit 2018講師,52ABP開源框架作者。2015年開始在國內(nèi)推廣ASP.NET Boilerplate Project開源框架。擁有多年開發(fā)經(jīng)驗與技術(shù)團隊管理經(jīng)驗,熟悉互聯(lián)網(wǎng)及電商業(yè)。負責(zé)過多個大型項目的開發(fā)和管理,擅長應(yīng)用系統(tǒng)項目的規(guī)劃設(shè)計、及企業(yè)解決方案的設(shè)計。
第 一部分
第 1章 編程語言和 .NET的關(guān)系 2
1.1 編程語言 2
1.2 編程語言中的C#、 F#和VB.NET 2
1.3 C#與.NET 3
1.4 小結(jié) 3
第 2章 .NET平臺 4
2.1 回顧.NET發(fā)展歷史 4
2.1.1 .NET Framework 4
2.1.2 .NET Framework與Java 5
2.1.3 .NET的跨平臺之路 5
2.2 Mono神奇的跨平臺解決方案 6
2.3 .NET Standard 6
2.4 .NET Core 7
2.4.1 .NET Core的特點 7
2.4.2 .NET Core 3.1 8
2.5 .NET Core與其他平臺 8
2.5.1 .NET Core與.NET Framework 8
2.5.2 .NET Core與Mono 8
2.5.3 .NET Core與ASP .NET Core 8
2.6 ASP .NET的發(fā)展歷程 9
2.7 ASP.NET Core的未來發(fā)展 9
2.8 小結(jié) 10
第3章 .NET 5的統(tǒng)一整合方案 11
3.1 進化中的.NET 11
3.2 .NET 5 (.NET Core vNext) 12
3.3 .NET Core實現(xiàn)真正的統(tǒng)一開發(fā)平臺 13
3.4 小結(jié) 14
第4章 創(chuàng)建ASP.NET Core項目 15
4.1 ASP.NET Core 15
4.2 ASP.NET Core的特性 15
4.3 配置計算機的開發(fā)環(huán)境 17
4.3.1 下載并安裝Visual Studio 2019 17
4.3.2 下載并安裝.NET Core SDK 18
4.4 創(chuàng)建ASP.NET Core Web程序 18
4.5 內(nèi)置的ASP.NET Core模板說明 20
4.6 小結(jié) 21
第5章 ASP.NET Core項目啟動流程 23
5.1 ASP.NET Core項目文件 23
5.2 ASP.NET Core項目的入口 25
5.3 ASP.NET Core中的進程內(nèi)與進程外托管模型 26
5.3.1 進程內(nèi)托管 27
5.3.2 Kestrel 28
5.3.3 CLI 28
5.4 ASP.NET Core進程外托管 29
5.5 探討幾個問題 30
5.6 小結(jié) 31
第6章 ASP.NET Core中的配置文件 33
6.1 啟動配置信息 33
6.2 通過GUI來設(shè)置launchSettings文件 35
6.3 ASP.NET Core appsettings.json文件 36
6.3.1 訪問配置信息 37
6.3.2 appsettings.json 39
6.3.3 用戶機密 39
6.3.4 環(huán)境變量 41
6.3.5 命令行參數(shù) 41
6.4 ASP.NET Core IConfiguration服務(wù)與依賴注入 42
6.5 小結(jié) 44
第7章 ASP.NET Core中的中間件及其工作原理 45
7.1 中間件 45
7.2 中間件在ASP.NET Core中的工作原理 47
7.3 配置ASP.NET Core請求處理管道 48
7.4 Configure()代碼解析 49
7.4.1 中間件掌握測試 49
7.4.2 中間件傳遞 50
7.4.3 實踐中間件的工作流程 50
7.5 小結(jié) 52
第8章 ASP.NET Core中的靜態(tài)文件中間件 54
8.1 添加靜態(tài)文件中間件 54
8.2 支持默認文件 55
8.3 自定義默認文件 56
8.4 UseFileServer中間件 56
8.5 小結(jié) 57
第9章 ASP.NET Core開發(fā)人員異常頁面 58
9.1 UseDeveloperExceptionPage中間件 58
9.2 自定義UseDeveloperExceptionPage中間件 60
9.3 UseDeveloperExceptionPage中間件如何工作 60
9.4 ASP.NET Core中的環(huán)境變量配置 61
9.5 配置ASPNETCORE_ENVIRONMENT變量 62
9.6 IWebHostEnvironment服務(wù)中的常用方法 64
9.7 小結(jié) 65
第二部分
第 10章 詳解ASP.NET Core MVC的設(shè)計模式 68
10.1 什么是MVC 68
10.1.1 MVC如何工作 69
10.1.2 Model 70
10.1.3 View 71
10.1.4 Controller 71
10.2 在ASP.NET Core中安裝MVC 73
10.2.1 在ASP.NET Core中配置MVC 73
10.2.2 添加HomeController 74
10.3 AddMvc()和AddMvcCore()的源代碼解析 75
10.4 小結(jié) 77
第 11章 依賴注入與Student模型 78
11.1 依賴注入 78
11.2 詳細了解ASP.NET Core中的依賴注入 80
11.3 使用依賴注入注冊服務(wù) 81
11.4 小結(jié) 83
第 12章 從Controller傳遞內(nèi)容協(xié)商數(shù)據(jù)到View 84
12.1 Controller請求及相應(yīng)流程說明 84
12.1.1 從Controller中返回JSON數(shù)據(jù) 85
12.1.2 安裝Fiddler 86
12.2 在Controller中實現(xiàn)內(nèi)容協(xié)商 86
12.3 從Controller返回View 89
12.3.1 MVC中的View 89
12.3.2 視圖文件夾結(jié)構(gòu) 90
12.3.3 視圖發(fā)現(xiàn) 90
12.3.4 View()重載方法 93
12.4 自定義視圖發(fā)現(xiàn) 93
12.4.1 指定視圖文件路徑 93
12.4.2 相對視圖文件路徑 94
12.4.3 其他View()重載方法 94
12.5 從Controller傳遞數(shù)據(jù)到View 95
12.5.1 數(shù)據(jù)從Controller傳遞到View的方法 95
12.5.2 使用ViewData將數(shù)據(jù)從Controller傳遞到View 95
12.5.3 使用ViewBag將數(shù)據(jù)從Controller傳遞到View 97
12.5.4 ViewData和ViewBag的對比 98
12.5.5 在ASP.NET Core MVC中創(chuàng)建一個強類型視圖 98
12.6 小結(jié) 100
第 13章 完善MVC框架內(nèi)容 102
13.1 為什么需要在ASP.NET Core MVC中使用ViewModel 102
13.1.1 ViewModel示例 103
13.1.2 在Controller中使用ViewModel 103
13.1.3 在視圖中使用ViewModel 104
13.2 在ASP.NET Core MVC中實現(xiàn)List視圖 104
13.2.1 修改IStudentRepository中的代碼 105
13.2.2 修改MockStudentRepository中的代碼 105
13.2.3 修改HomeController中的代碼 106
13.2.4 視圖Index.cshtml中代碼的變化 106
13.3 為什么需要布局視圖 107
13.3.1 ASP.NET Core MVC中的布局視圖 108
13.3.2 創(chuàng)建布局視圖 109
13.3.3 使用布局視圖 109
13.4 布局頁面中的節(jié)點 110
13.4.1 布局頁面示例 110
13.4.2 渲染節(jié)點 111
13.4.3 使布局部分可選 111
13.4.4 節(jié)點的使用 112
13.5 什么是_ViewStart.cshtml文件 113
13.5.1 ASP.NET Core MVC中的_ViewStart.cshtml文件 113
13.5.2 _ViewStart.cshtml文件支持分層 113
13.5.3 邏輯判斷調(diào)用布局視圖 114
13.5.4 修改視圖 114
13.6 ASP.NET Core MVC中的_ViewImports.cshtml文件 116
13.7 小結(jié) 117
第 14章 ASP.NET Core MVC中的路由 118
14.1 ASP.NET Core MVC中的默認路由 119
14.2 UseMvcWithDefaultRoute()方法中的代碼 120
14.3 ASP.NET Core MVC中的屬性路由 122
14.3.1 屬性路由示例 123
14.3.2 屬性路由參數(shù) 123
14.3.3 屬性路由可選參數(shù) 124
14.3.4 控制器和操作方法名稱 125
14.3.5 屬性路由支持多層 125
14.3.6 在屬性路由中自定義路由 128
14.3.7 常規(guī)路由與屬性路由對比 129
14.4 ASP.NET Core中新增的路由中間件 129
14.4.1 路由中間件UseRouting 130
14.4.2 路由中間件UseEndpoints 131
14.5 LibMan輕量級包管理器 133
14.5.1 使用LibMan安裝Bootstrap 133
14.5.2 libman.json文件 134
14.5.3 清理和還原客戶端庫 134
14.5.4 卸載或更新客戶端庫 134
14.5.5 libman.json文件說明 135
14.5.6 在網(wǎng)站中自定義CSS樣式表 136
14.6 在ASP.NET Core應(yīng)用程序中使用Bootstrap 136
14.6.1 Details.cshtml視圖優(yōu)化 137
14.6.2 Index.cshtml視圖優(yōu)化 137
14.7 小結(jié) 139
第 15章 ASP.NET Core中的TagHelper 140
15.1 導(dǎo)入內(nèi)置TagHelper 140
15.1.1 使用TagHelper生成Link鏈接 140
15.1.2 TagHelper中的Link標簽 141
15.2 為什么要使用TagHelper 141
15.3 Image TagHelper 144
15.3.1 瀏覽器緩存 145
15.3.2 禁用瀏覽器緩存 145
15.3.3 HTTP狀態(tài)碼中的200與302 146
15.3.4 ASP.NET Core中的Image TagHelper 146
15.3.5 驗證Image TagHelper 147
15.4 ASP.NET Core中的Environment TagHelper 148
15.4.1 設(shè)置應(yīng)用程序環(huán)境的名稱 148
15.4.2 如果CDN “掛了”怎么辦 149
15.5 使用Bootstrap給項目添加導(dǎo)航菜單 150
15.6 Form TagHelpers提交學(xué)生信息 153
15.6.1 場景描述 153
15.6.2 Form TagHelper 154
15.6.3 Input TagHelper 154
15.6.4 Label TagHelper 155
15.6.5 Select TagHelper 155
15.6.6 Create.cshtml中基本的HTML代碼 156
15.6.7 Bootstrap優(yōu)化后的Create.cshtml的代碼 158
15.7 小結(jié) 159
第 16章 ASP.NET Core中的模型綁定與模型驗證 160
16.1 ASP.NET Core中模型綁定的簡單例子 160
16.2 在IStudentRepository接口中添加Add() 方法 162
16.2.1 在MockStudentRepository類中實現(xiàn)Add() 方法 163
16.2.2 HttpGet與HttpPost 163
16.2.3 運行結(jié)果 165
16.3 ASP.NET Core中的模型驗證 166
16.3.1 模型驗證示例 166
16.3.2 ModelState.IsValid屬性驗證 168
16.3.3 在視圖中顯示模型驗證錯誤 168
16.3.4 自定義模型驗證錯誤消息 169
16.3.5 ASP.NET Core內(nèi)置模型驗證屬性 169
16.3.6 顯示屬性 169
16.3.7 使用多個模型驗證屬性 170
16.3.8 自定義模型驗證錯誤的顏色 170
16.4 ASP.NET Core中的Select選擇器驗證 171
16.4.1 HTML頁面中的選擇列表 171
16.4.2 使選擇列表成為必填 172
16.4.3 讓選擇列表成為真正的必需驗證 173
16.5 深入了解依賴注入3種服務(wù)的不同 174
16.5.1 IStudentRepository接口 174
16.5.2 Student類 175
16.5.3 MockStudentRepository倉儲服務(wù) 175
16.5.4 HomeController 176
16.5.5 創(chuàng)建學(xué)生信息 177
16.5.6 完善_ViewImports.cshtml 178
16.6 驗證依賴注入服務(wù) 179
16.6.1 AddSingleton()方法 179
16.6.2 AddScoped()方法 180
16.6.3 AddTransient()方法 181
16.6.4 Scoped服務(wù)、 Transient服務(wù)與Singleton服務(wù) 181
16.7 小結(jié) 182
第 17章 EntityFramework Core數(shù)據(jù)訪問與倉儲模式 183
17.1 為什么要使用ORM 183
17.1.1 EF Core Code First模式 184
17.1.2 EF Core Database First模式 185
17.1.3 EF Core所支持的數(shù)據(jù)庫 185
17.2 單層Web應(yīng)用和多層Web應(yīng)用的區(qū)別 186
17.2.1 單層Web應(yīng)用 186
17.2.2 多層Web應(yīng)用程序——三層架構(gòu) 187
17.2.3 多層Web應(yīng)用程序——領(lǐng)域驅(qū)動設(shè)計架構(gòu) 188
17.3 Microsoft.AspNetCore.App包 190
17.4 安裝Entity Framework Core 192
17.4.1 在類庫項目中安裝NuGet包 193
17.4.2 Entity Framework Core中的DbContext 194
17.4.3 在應(yīng)用程序中使用DbContext 194
17.4.4 Entity Framework Core中的DbSet 195
17.5 在Entity Framework Core中使用SQL Server 195
17.5.1 AddDbContext()和AddDbContextPool()方法之間的區(qū)別 196
17.5.2 UseSqlServer()擴展方法 196
17.5.3 ASP.NET Core中的數(shù)據(jù)庫連接字符串 196
17.6 ASP.NET Core中的倉儲模式 197
17.6.1 倉儲模式簡介 197
17.6.2 倉儲模式中的接口 198
17.6.3 修改IStudentRepository接口 198
17.6.4 倉儲模式中的內(nèi)存實現(xiàn) 199
17.6.5 Repository模式——SQL Server數(shù)據(jù)庫實現(xiàn) 201
17.6.6 選擇合適的倉儲實現(xiàn)模式 202
17.6.7 倉儲模式的優(yōu)點 203
17.7 Entity Framework Core遷移功能 203
17.7.1 EF Core中的遷移 204
17.7.2 常用的Entity Framework Core遷移命令 205
17.7.3 在Entity Framework Core中創(chuàng)建遷移 205
17.7.4 在Entity Framework Core中更新數(shù)據(jù)庫 206
17.7.5 Entity Framework Core中的種子數(shù)據(jù) 207
17.7.6 如何啟用種子數(shù)據(jù) 207
17.7.7 更改現(xiàn)有的數(shù)據(jù)庫種子數(shù)據(jù) 209
17.7.8 DbContext類保持“干凈” 210
17.8 在ASP.NET Core中同步領(lǐng)域模型與數(shù)據(jù)庫架構(gòu) 211
17.8.1 給學(xué)生增加頭像字段 211
17.8.2 Migrations文件夾中的文件說明 212
17.8.3 _EFMigrationsHistory表的使用 212
17.8.4 如何刪除已應(yīng)用的遷移記錄 212
17.8.5 刪除已應(yīng)用于數(shù)據(jù)庫的遷移 213
17.9 小結(jié) 213
第 18章 學(xué)生頭像上傳與信息修改 214
18.1 修改Student模型類 215
18.1.1 視圖模型——StudentCreateViewModel 215
18.1.2 更新Create視圖中的代碼 216
18.1.3 更新Create()操作方法的代碼 219
18.1.4 學(xué)生詳情視圖頁面代碼 220
18.1.5 學(xué)生列表視圖頁面代碼 221
18.2 在ASP.NET Core MVC中完成上傳多個文件 222
18.2.1 StudentCreateViewModel文件 223
18.2.2 更新Create視圖的代碼 223
18.2.3 修改Create()操作方法 226
18.3 ASP.NET Core中的學(xué)生編輯視圖 228
18.3.1 導(dǎo)航到編輯視圖 228
18.3.2 編輯視圖模型 229
18.3.3 Edit() 操作方法 230
18.3.4 編輯視圖頁面 230
18.3.5 完成HttpPost的Edit()操作方法 232
18.4 枚舉的擴展方法實現(xiàn) 235
18.5 小結(jié) 237
第 19章 404錯誤頁與異常攔截 238
19.1 HTTP狀態(tài)碼中的4××和5×× 238
19.1.1 ASP.NET Core中的404錯誤 239
19.1.2 404錯誤信息的視圖代碼 239
19.2 統(tǒng)一處理ASP.NET Core中的404錯誤 240
19.2.1 404錯誤的類型 241
19.2.2 ASP.NET Core中的404錯誤示例 241
19.3 處理失敗的HTTP狀態(tài)碼 242
19.3.1 UseStatusCodePages中間件 242
19.3.2 UseStatusCodePagesWithRedirects中間件 243
19.3.3 添加ErrorController 244
19.3.4 添加NotFound視圖 245
19.4 UseStatusCodePagesWithRedirects與UseStatusCodePagesWithReExecute 245
19.4.1 UseStatusCodePagesWithRedirects中間件說明 246
19.4.2 UseStatusCodePagesWithRedirects請求處理流程 246
19.4.3 使用UseStatusCodePagesWithReExecute請求處理流程 247
19.5 ASP.NET Core中的全局異常處理 249
19.5.1 ASP.NET Core中的UseDeveloperExceptionPage中間件 249
19.5.2 ASP.NET Core中的非開發(fā)環(huán)境異常信息 250
19.5.3 ASP.NET Core中的異常處理 251
19.5.4 調(diào)整Edit()方法中的錯誤視圖 253
19.6 小結(jié) 255
第 20章 ASP.NET Core中的日志記錄 256
20.1 ASP.NET Core中的默認日志 256
20.2 ASP.NET Core中的日志記錄提供程序 257
20.2.1 ASP.NET Core內(nèi)置日志記錄提供程序 257
20.2.2 ASP.NET Core的第三方日志記錄提供程序 258
20.2.3 ASP.NET Core中默認的日志記錄提供程序 258
20.2.4 appsettings.json文件中的LogLevel 259
20.3 在ASP.NET Core中實現(xiàn)記錄異常信息 261
20.3.1 Error和NotFound視圖修改 262
20.3.2 在ASP.NET Core中記錄異常信息 263
20.3.3 在ASP.NET Core中使用NLog記錄信息到文件中 267
20.3.4 在ASP.NET Core中使用NLog 267
20.4 在ASP.NET Core中LogLevel配置及過濾日志信息 270
20.4.1 日志等級LogLevel枚舉 270
20.4.2 ILogger方法 271
20.4.3 在ASP.NET Core中使用日志過濾 272
20.4.4 按日志類別(Log Category)和日志記錄提供程序進行日志篩選 275
20.4.5 特定環(huán)境變量中appsettings.json文件的LogLevel配置 277
20.5 小結(jié) 277
第三部分
第 21章 從零開始學(xué)ASP.NET Core Identity框架 280
21.1 ASP.NET Core Identity介紹 280
21.2 使用ASP.NET Core Identity注冊新用戶 283
21.2.1 RegisterViewModel視圖模型 284
21.2.2 賬戶控制器 284
21.2.3 注冊視圖中的代碼 285
21.2.4 添加注冊按鈕 286
21.3 UserManager和SignInManager服務(wù) 286
21.3.1 ASP.NET Core Identity中對密碼復(fù)雜度的處理 288
21.3.2 ASP.NET Core Identity密碼默認設(shè)置 289
21.3.3 覆蓋ASP.NET Core身份中的密碼默認設(shè)置 290
21.3.4 修改中文提示的錯誤信息 291
21.4 登錄狀態(tài)及注銷功能的實現(xiàn) 294
21.5 ASP.NET Core Identity中的登錄功能實現(xiàn) 295
21.5.1 LoginViewModel登錄視圖模型 295
21.5.2 登錄視圖的代碼 296
21.5.3 AccountController中的Login()操作方法 297
21.5.4 會話Cookie與持久性Cookie 298
21.6 小結(jié) 299
第 22章 授權(quán)與驗證的關(guān)系 300
22.1 ASP.NET Core中的Authorize屬性 300
22.1.1 Authorize屬性示例 300
22.1.2 ASP.NET Core中的AllowAnonymous屬性 301
22.1.3 全局應(yīng)用Authorize屬性 302
22.2 登錄后重定向到指定URL 303
22.2.1 ASP.NET Core中的ReturnUrl 303
22.2.2 ReturnUrl查詢字符串示例 303
22.2.3 登錄后重定向到ReturnUrl 304
22.3 開放式重定向攻擊 305
22.3.1 什么是開放式重定向漏洞 305
22.3.2 開放式重定向漏洞示例 305
22.4 ASP.NET Core中的客戶端驗證 307
22.4.1 服務(wù)器端驗證示例 307
22.4.2 客戶端驗證 308
22.4.3 什么是客戶端隱式驗證 310
22.4.4 客戶端驗證如何在ASP.NET Core中工作 311
22.4.5 隱式驗證在ASP.NET Core中失效 312
22.5 在ASP.NET Core中進行遠程驗證 312
22.5.1 遠程驗證示例 313
22.5.2 ASP.NET Core遠程屬性 314
22.5.3 ASP.NET Core Ajax失效 315
22.6 ASP.NET Core中的自定義驗證屬性 315
22.6.1 自定義驗證屬性示例 315
22.6.2 在ASP.NET Core中使用自定義驗證屬性 316
22.7 小結(jié) 317
第 23章 角色管理與用戶擴展 318
23.1 擴展IdentityUser類 319
23.1.1 修改AppDbContext中的參數(shù) 321
23.1.2 生成新遷移記錄向AspNetUsers表中添加字段 321
23.1.3 在AspNetUsers表中保存自定義數(shù)據(jù) 322
23.1.4 AccountController類中Register()操作方法的修改 323
23.1.5 AllowAnonymous匿名屬性的使用 324
23.2 ASP.NET Core中的角色管理 324
23.2.1 ASP.NET Core中的RoleManager 324
23.2.2 在AdminController中添加創(chuàng)建新角色的代碼 325
23.2.3 創(chuàng)建角色視圖模型 326
23.2.4 創(chuàng)建角色視圖 326
23.3 在ASP.NET Core中顯示所有角色列表 328
23.4 編輯ASP.NET Core中的角色 331
23.4.1 編輯角色視圖模型 332
23.4.2 編輯角色操作方法 333
23.4.3 編輯角色視圖 335
23.5 角色管理中的用戶關(guān)聯(lián)關(guān)系 338
23.5.1 Identity中的AspNetUserRoles數(shù)據(jù)庫表關(guān)聯(lián)關(guān)系 339
23.5.2 EditUsersInRole的HttpGet操作方法 339
23.5.3 EditUsersInRole的HttpPost操作方法 340
23.5.4 EditUsersInRole視圖 341
23.6 小結(jié) 343
第 24章 角色授權(quán)與用戶管理 344
24.1 基于角色的授權(quán) 344
24.1.1 授權(quán)屬性的多個實例 345
24.1.2 基于角色授權(quán)的控制器操作方法 345
24.2 添加授權(quán)中間件UseAuthorization 346
24.3 在菜單欄上顯示或隱藏管理 347
24.4 ASP.NET Core Identity中的拒絕訪問功能 348
24.4.1 AccessDenied()操作方法 348
24.4.2 AccessDenied視圖代碼 349
24.5 獲取Identity中的用戶列表 349
24.5.1 UserManager服務(wù)的用戶訪問 350
24.5.2 ASP.NET Core列表用戶視圖 351
24.5.3 管理導(dǎo)航菜單 353
24.5.4 修改Register()方法 354
24.5.5 下拉菜單功能失效 355
24.6 編輯Identity中的用戶 355
24.6.1 編輯用戶視圖 355
24.6.2 EditUser()的操作方法 356
24.6.3 EditUser視圖文件 358
24.7 NotFound視圖異!360
24.8 Identity中刪除的用戶功能 362
24.8.1 使用GET請求刪除數(shù)據(jù) 362
24.8.2 使用POST請求刪除數(shù)據(jù) 362
24.8.3 DeleteUser()方法 363
24.9 ASP.NET Core中的確認刪除功能 364
24.9.1 瀏覽器確認對話框 364
24.9.2 是和否刪除按鈕 364
24.9.3 將confirmDelete()方法添加到視圖中 366
24.10 刪除ASP.NET CoreIdentity中的角色 367
24.11 小結(jié) 369
第 25章 EF Core中的數(shù)據(jù)完整性約束 370
25.1 EF Core中的數(shù)據(jù)完整性約束 370
25.2 優(yōu)化生產(chǎn)環(huán)境中的自定義錯誤視圖 374
25.2.1 ErrorController類 376
25.2.2 優(yōu)化Error.cshtml 376
25.3 小結(jié) 378
第 26章 ASP.NET Core中的聲明授權(quán) 379
26.1 Identity中的用戶角色 379
26.1.1 視圖模型 380
26.1.2 ManageUserRoles()方法 380
26.1.3 ManageUserRoles視圖文件 382
26.2 啟用MARS與模型綁定失效 383
26.2.1 為什么不使用foreach 384
26.2.2 for循環(huán)與foreach循環(huán)的異同點 387
26.3 聲明授權(quán) 388
26.3.1 ClaimsStore與UserClaimsViewModel類 388
26.3.2 ManageUserClaims()操作方法 389
26.3.3 ManageUserClaims視圖文件 391
26.4 小結(jié) 393
第 27章 RBAC與CABC 394
27.1 RBAC 394
27.2 CBAC 395
27.3 角色與策略的結(jié)合 396
27.4 在MVC視圖中進行角色與聲明授權(quán) 397
27.5 AccessDenied視圖的路由配置修改 399
27.6 策略授權(quán)中的ClaimType和ClaimValue 402
27.7 使用委托創(chuàng)建自定義策略授權(quán) 404
27.7.1 自定義復(fù)雜授權(quán)需求 406
27.7.2 自定義授權(quán)需求和處理程序 407
27.7.3 自定義需求的授權(quán)處理程序示例 408
27.7.4 多個自定義授權(quán)處理程序 411
27.8 小結(jié) 413
第 28章 Identity的賬戶中心的設(shè)計 414
28.1 第三方登錄身份提供商 414
28.1.1 第三方登錄身份提供商如何在ASP.NET Core中工作 415
28.1.2 創(chuàng)建Azure OAuth憑據(jù)--——客戶端ID和客戶端密鑰 416
28.1.3 在ASP.NET Core中啟用Microsoft身份驗證 418
28.1.4 集成GitHub身份驗證登錄 425
28.2 用戶機密 429
28.3 驗證賬戶信息安全 430
28.3.1 驗證電子郵箱的好處 431
28.3.2 阻止登錄未驗證的用戶登錄 431
28.3.3 電子郵箱確認令牌 435
28.3.4 第三方登錄的電子郵箱確認令牌 439
28.3.5 激活用戶郵箱 442
28.4 忘記密碼功能 444
28.5 重置密碼功能 446
28.6 小結(jié) 449
第 29章 解析部分ASP.NET Core Identity源代碼 450
29.1 解析ASP.NET Core Identity中Token的生成與驗證 450
29.2 自定義令牌類型及令牌有效期 454
29.3 ASP.NET Core中Data Protection的加密和解密示例 456
29.4 在ASP.NET Core中添加更改密碼功能 461
29.5 為第三方賬戶添加密碼 464
29.6 ASP.NET Core中的賬戶鎖定 468
29.7 小結(jié) 472
第四部分
第30章 架構(gòu) 474
30.1 架構(gòu)簡介 474
30.2 學(xué)校管理系統(tǒng)架構(gòu)設(shè)計 475
30.3 EntityFramework Core中的實體關(guān)系 476
30.4 當前架構(gòu) 480
30.5 小結(jié) 481
第31章 倉儲模式的最佳實踐 482
31.1 泛型倉儲的實現(xiàn) 482
31.2 異步編碼與同步編碼 483
31.3 IRepository接口的設(shè)計實現(xiàn) 484
31.4 RepositoryBase倉儲代碼的實現(xiàn) 489
31.5 小結(jié) 495
第32章 重構(gòu)學(xué)生管理功能 496
32.1 修改HomeController中的代碼 496
32.2 學(xué)生列表排序功能 505
32.3 模糊查詢 507
32.4 一個簡單分頁的實現(xiàn) 509
32.5 小結(jié) 514
第33章 課程列表與分組統(tǒng)計功能 515
33.1 泛型分頁 515
33.2 遷移數(shù)據(jù)信息 521
33.3 課程列表 526
33.4 分部視圖 530
33.5 學(xué)生統(tǒng)計信息 532
33.6 Razor條件運行時編譯 534
33.7 小結(jié) 535
第34章 復(fù)雜數(shù)據(jù)類型及自動依賴注入 536
34.1 創(chuàng)建相關(guān)實體信息 537
34.1.1 修改Course實體信息 538
34.1.2 創(chuàng)建學(xué)院與調(diào)整學(xué)生課程信息 539
34.2 更新數(shù)據(jù)庫上下文及初始化內(nèi)容 542
34.3 服務(wù)之間的自動注冊 552
34.4 小結(jié) 555
第35章 課程與教師的CRUD 556
35.1 EF Core中預(yù)加載的使用 556
35.2 較為復(fù)雜的預(yù)加載的使用 558
35.3 編輯課程功能 569
35.3.1 編輯課程信息 572
35.3.2 課程信息的詳情頁 575
35.3.3 刪除課程信息 577
35.4 編輯教師功能 578
35.4.1 添加教師信息 583
35.4.2 刪除教師信息 586
35.5 優(yōu)化目錄結(jié)構(gòu) 587
35.6 小結(jié) 588
第36章 處理并發(fā)沖突 589
36.1 并發(fā)沖突 589
36.1.1 悲觀并發(fā)(悲觀鎖) 590
36.1.2 樂觀并發(fā)(樂觀鎖) 591
36.2 添加Department的相關(guān)類 591
36.2.1 添加DepartmentsService 592
36.2.2 學(xué)院列表功能 593
36.2.3 添加詳情視圖 597
36.2.4 編輯學(xué)院信息功能 602
36.3 EF Core中的并發(fā)控制 605
36.4 小結(jié) 609
第37章 EF Core中的繼承與原生SQL語句使用 610
37.1 繼承 610
37.1.1 實現(xiàn)TPH繼承 611
37.1.2 執(zhí)行數(shù)據(jù)庫遷移 613
37.2 執(zhí)行原生SQL語句 614
37.2.1 DbSet.FromSqlRaw的使用 614
37.2.2 Database.ExecuteSqlComma的使用 615
37.2.3 執(zhí)行原生SQL語句實現(xiàn)更新 616
37.3 小結(jié) 619
第38章 EF Core 中的數(shù)據(jù)加載與關(guān)系映射 620
38.1 EF Core中的數(shù)據(jù)加載 620
38.1.1 顯式加載 620
38.1.2 延遲加載 621
38.1.3 3種加載形式的性能區(qū)別 623
38.2 Fluent API與數(shù)據(jù)注釋 624
38.3 Entity Framework Core中的Code First關(guān)系映射約定 625
38.3.1 一對一關(guān)聯(lián)關(guān)系 626
38.3.2 一對多關(guān)聯(lián)關(guān)系 627
38.3.3 多對多關(guān)聯(lián)關(guān)系 631
38.4 小結(jié) 632
第五部分
第39章 ASP.NET Core中的Web API 634
39.1 IoT與RESTful服務(wù) 634
39.2 添加Web API服務(wù) 635
39.3 安裝Postman并調(diào)試Web API服務(wù) 639
39.3.1 測試POST請求 639
39.3.2 測試GET請求 640
39.3.3 測試PutTodoItem()方法 642
39.3.4 測試DeleteTodoItem()方法 644
39.3.5 404和400異!644
39.4 圖形可視化的Web API幫助頁 646
39.4.1 Swagger/OpenAPI 646
39.4.2 Swashbuckle.AspNetCore入門 646
39.4.3 添加并配置Swagger中間件 647
39.4.4 獲取swagger.json失敗 648
39.4.5 調(diào)試Swagger UI 650
39.4.6 調(diào)用SwaggerGen API 654
39.5 小結(jié) 657
第40章 實踐多層架構(gòu)體系 658
40.1 領(lǐng)域驅(qū)動設(shè)計的分層結(jié)構(gòu) 658
40.2 重構(gòu)MockSchoolManagement項目 659
40.2.1 添加所需類庫 661
40.2.2 添加依賴引用關(guān)系 662
40.3 遷移各類庫 663
40.3.1 各個項目文件中的引用 664
40.3.2 類庫效果圖 665
40.3.3 多程序集的依賴注入 667
40.3.4 重新生成遷移記錄及生成SQL腳本 668
40.4 小結(jié) 669
第41章 部署與發(fā)布 670
41.1 部署至IIS 670
41.1.1 IIS的安裝和配置 670
41.1.2 安裝ASP.NET Core托管模塊 672
41.1.3 啟用Web Deploy 672
41.1.4 創(chuàng)建IIS站點 675
41.1.5 使用Visual Studio將ASP.NET Core發(fā)布到IIS站點 676
41.2 部署至Ubuntu 678
41.2.1 Ubuntu中安裝.NET Core 679
41.2.2 安裝Nginx 679
41.2.3 編譯與發(fā)布 680
41.3 在Docker中調(diào)試運行ASP.NET Core 682
41.3.1 安裝Docker 682
41.3.2 添加Dockerfile文件 683
41.4 云原生Azure Web App 685
41.5 小結(jié) 689
第42章 ASP.NET Core 2.2到ASP. NET Core 3.1的遷移指南 690
42.1 升級至ASP.NET Core 3.1 690
42.1.1 修改項目啟動 692
42.1.2 修改Startup 693
42.2 遷移升級后的看法 693
42.3 Visual Studio 2019插件推薦 694
42.4 小結(jié) 696
你還可能感興趣
我要評論
|