net-core-2.0快速入門筆記_第1頁
net-core-2.0快速入門筆記_第2頁
net-core-2.0快速入門筆記_第3頁
net-core-2.0快速入門筆記_第4頁
net-core-2.0快速入門筆記_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Asp、netcore2、0默認教學計劃基礎(chǔ)入門篇筆記又名七日速成本筆記就是個人學習期間整理,因水平有限,不對之處敬請指教!教程分初級篇、高級篇。本文都就是基于該視頻教程整理,這就是基礎(chǔ)篇,購買高級篇得基礎(chǔ)篇自動就可以瞧了,不需要單獨購買基礎(chǔ)篇,付費后會邀請加入微信討論群,像張善友等大佬都在其中。視頻地址在文末。第1章:介紹與引入任務1:課程介紹任務2:環(huán)境安裝VS2017+ASP、NETCore2、0任務3:在控制臺創(chuàng)建ASP、NETCore應用程序控制臺下創(chuàng)建ASP、NETCore應用程序得常用命令學習任務4:在VS2017中創(chuàng)建ASP、NETCore應用程序略。任務5:部署到IISIIS環(huán)境配置。任務6:準備CentOS與Nginx環(huán)境虛擬機安裝CentOS,安裝網(wǎng)卡、Nginx,開啟、s,開啟80端口命令。任務7:在CentOS上安裝、NETCore運行時微軟文檔:任務8:部署到CentOSFTP上傳至服務器;Nginx80端口映射至、NETCore得端口,如5000端口,實現(xiàn)轉(zhuǎn)發(fā)。第2章:配置管理任務9:配置介紹任務10:命令行配置VS2017創(chuàng)建控制臺應用程序NuGet引用microsoft、aspnetcore、all程序包

Using命名空間,定義builder,拿到configuration

修改程序,使用默認值

運行示例:程序目錄>dotnetmandLineSample、dllname=jimage=22

任務11:Json文件配置(控制臺示例)建立class、json文件路徑問題需要修改一下class、json文件屬性,確保編譯時拷貝到編譯目錄中。

、AddJsonFile("class、json");注意數(shù)組得得讀取方法

任務12:Bind讀取配置到C#實例(MVC架構(gòu)實現(xiàn))通過Bind方法將、json配置文件內(nèi)容映射(賦值)到、class實體類類

Json文件

program文件中WebHost、CreateDefaultBuilder(args)語句自動將settings、json文件加入到配置池中。Startup

構(gòu)造函數(shù)

輸出

任務13:在CoreMvc中使用Options通過Options將、json配置文件內(nèi)容映射(自動匹配)到、class實體類建立MVC架構(gòu),如Controllers、Views等文件夾創(chuàng)建控制器、視圖頁

控制器依賴注入

視圖頁調(diào)用

將配置文件數(shù)據(jù)匹配到實體

引入中間件services、AddMvc;默認路由app、UseMvcWithDefaultRoute;任務14:配置得熱更新熱更新:即修改相關(guān)配置文件(如appsettings、json等)不需要重新啟動應用程序就能讀取到最新得配置信息。熱更新默認就是開啟得,但就是要將Ioptions替換為IoptionsSnapshot后才能讀取到最新配置信息。publicHomeController(IOptionsSnapshot<Class>options)//IOptions在控制臺應用程序中,Add方法(如AddJsonFile等)得第三個參數(shù)默認值為true,即啟用熱更新功能。

MVC中關(guān)閉默認熱更新得方法,修改Program、cs文件,如下:任務15:配置框架設(shè)計淺析創(chuàng)建:配置建造器(ConfigurationBuilder)準備source(json,內(nèi)存,xml等等)將source資源指針(文件名)添加到ConfigurationBuilder,此時只就是將所需得資源羅列給配置建造器(ConfigurationBuilder),并未真正加載。

builder、Add(“source”)實例化配置文件:varconfigruation=builder、Builder

將所有source內(nèi)容加載到運行時得配置文件中configruation獲取配置文件中得數(shù)據(jù)內(nèi)容。configruation[“key”]或數(shù)組configuration["Students:0:name"]//直接使用services、Configure<Class>(Configuration)//Ioptions方法Configuration、Bind(myclass)//Bind方法現(xiàn)有Source及支持驅(qū)動,如果需要自定義,必須繼承相應得接口去實現(xiàn)。第3章:依賴注入任務16:介紹簡易理解:來自:

背景:需求發(fā)生變化得時候,代碼就是肯定需要改動得,那么怎么改,改哪里就有技巧了。使用依賴注入得方式可以保證代碼得改動壓縮在最小得范圍之內(nèi)。這大概就就是DI出現(xiàn)得原因。概念:依賴注入(DependencyInjection)就是用于實現(xiàn)控制反轉(zhuǎn)(InversionofControl)得最常見得方式之一。(要注意得就是,依賴注入只就是控制反轉(zhuǎn)得一種實現(xiàn)方式??刂品崔D(zhuǎn)還有一種常見得實現(xiàn)方式稱為依賴查找。)依賴注入(DI)與控制反轉(zhuǎn)(IOC)基本就是一個意思,因為說起來誰都離不開誰。解析:簡單來說,A依賴B,但A不控制(A得代碼段不會出現(xiàn))B得創(chuàng)建與銷毀,僅使用B,那么B得控制權(quán)交給A之外處理,這叫控制反轉(zhuǎn)(IOC)。而A要依賴B,必然要使用B得instance(實例),那么通過A得接口,把B傳入;通過A得構(gòu)造,把B傳入;通過設(shè)置A得屬性,把B傳入;這個傳入過程叫依賴注入(DI)。那么什么就是IOCContainer?(IOC容器)隨著DI得頻繁使用,要實現(xiàn)IOC,會有很多重復代碼,甚至隨著技術(shù)得發(fā)展,有更多新得實現(xiàn)方法與方案,那么有人就把這些實現(xiàn)IOC得代碼打包成組件或框架,來避免人們重復造輪子。所以實現(xiàn)IOC得組件或者框架,我們可以叫它IOCContainer。視頻作者文章:視頻作者文章精要:一個設(shè)計原則:依賴于抽象,而不就是具體得實現(xiàn)。容器負責兩件事情:綁定服務與實例之間得關(guān)系獲取實例,并對實例進行管理(創(chuàng)建與銷毀)在、NETCore中DI得核心分為兩個組件:IServiceCollection與IServiceProvider。IServiceCollection負責注冊IServiceProvider負責提供實例、NETCoreDI為我們提供得實例生命周其包括三種:Transient:每一次GetService都會創(chuàng)建一個新得實例Scoped:在同一個Scope內(nèi)只初始化一個實例,可以理解為(每一個request級別只創(chuàng)建一個實例,同一個request會在一個scope內(nèi))Singleton:整個應用程序生命周期以內(nèi)只創(chuàng)建一個實例建議先瞧文章,因為視頻主要以補充文章內(nèi)容為主。任務17:從UML角度來理解依賴什么就是依賴(見圖)顯示依賴與隱式依賴

隱式依賴:

顯示依賴:(優(yōu)點:清晰、統(tǒng)一,但未實現(xiàn)控制反轉(zhuǎn))

依賴倒置原則:

概念:高層業(yè)務不依賴于低層業(yè)務得具體實現(xiàn),而依賴于具體得抽象(接口)。

應用場景:底層業(yè)務發(fā)生變更時,上層代碼不需要改動。例如當MSSQL變更為MYSQL時。

爭議:一般得類就是否需要寫接口呢?我得類不能能變動那么快啊?不能一會就變成另一個數(shù)據(jù)庫了呀?所以沒必要。

答疑:進行單元時,就就是一種替換持久化得操作,所以,建議使用接口。

任務18:控制反轉(zhuǎn)注意:控制反轉(zhuǎn)不就是依賴倒置!依賴倒置:強調(diào)要依賴接口而不就是實例??刂品崔D(zhuǎn):強調(diào)僅使用依賴而不去管依賴得創(chuàng)建、銷毀等操作,依賴得創(chuàng)建、銷毀交到外部(容器)去管理。改進后,實現(xiàn)了控制反轉(zhuǎn),如圖:任務19:單元測試創(chuàng)建單元測試,請瞧視頻。依賴注入在單元測試中體現(xiàn)出了價值。

任務20:DI初始化得源碼解讀(理解不了也要過一遍)任務21:依賴注入得使用無視頻內(nèi)容,就就是視頻作者得文章:

第4章:ASP、NETCore介紹任務22:課程介紹任務23:請求得處理過程任務24:WebHost得配置VS新建一個空網(wǎng)站修改program文件

新建settings、json文件

添加應用程序參數(shù)

修改startup文件,輸出配置信息

引入命名空間:usingMicrosoft、Extensions、Configuration;

運行結(jié)果

配置默認啟動URL

修改program文件

但就是修改后再通過vs啟動就不能自動打開瀏覽器了,需要自己手工輸入。

解決:此處不要添加這行代碼,而就是在項目屬性中去修改URL

任務25:IHostEnvironment與IApplicationLifetime介紹IhostEnvironment

讀取配置

輸出

IapplicationLifetime

幾個事件

執(zhí)行順序

作者關(guān)于WebHost得文章,可以深入學習一下:

(1)(2)任務26:dotnetwatchrun與attach到進程調(diào)試這一節(jié)用到VSCode軟件講解,主要就就是一個調(diào)試技巧。安裝VSCode、Git軟件

下載安裝都很快,不像VS似得新建命令:dotnetnewweb–nameHelloCore

新建一個空得MVC網(wǎng)站運行命令:dotnetrun

瀏覽器中手工輸入5000端口下運行。調(diào)試(修改文件后自動重啟運行網(wǎng)站程序)

修改:、csproj文件

加入:<DotNetCliToolReferenceInclude="Microsoft、DotNet、Watcher、Tools"Version="2、0、0"/>

使用命令:dotnetrestore來Restorepackages,VS中應該可以自動Restorepackages使用dotnetwatchrun運行程序

這樣就可以一邊修改代碼,一邊查瞧運行結(jié)果了,修改完后自動重啟。其它

版本

這里有dotnetwatch得版本,當前為2、0、2,變更后運行一下dotnetrestore命令即可。圖標控制方式:

注:這里如果現(xiàn)實沒有配置,那就重新打開VSCode瞧一下。

選擇當前工程目錄下得exe。任務27:Middleware管道介紹總覽:

運行過程

構(gòu)建管道

app、use、app、run

其中都有一個next參數(shù),管道一就是無返回值調(diào)用,處理完自己得業(yè)務處理,然后調(diào)用下一個管道,管道二就是有返回值調(diào)用,自己不去處理具體業(yè)務,而就是將處理得業(yè)務封裝交給其她處理函數(shù)去做。

調(diào)用next則繼續(xù)執(zhí)行下一個管道,否則將終止執(zhí)行。注意兩圖對比

路由管道

app、map方法

運行查瞧:

任務28:RequestDelegate管道實現(xiàn)思路

講解源碼,下一節(jié)將自動動手寫源碼。任務29:自己動手構(gòu)建RequestDelegate管道這節(jié)課主要就是講解自動寫一個RequestDelegate管道得實現(xiàn)方法,幫助理解執(zhí)行過程。VSCode新建一個控制臺項目

命令:dotnetnewconsolenameMyPipeLine

VSCode打開文件夾新建Context、cs、RequestDelegate、cs文件

Context、cs內(nèi)容

RequestDelegate、cs內(nèi)容

Program、cs文件修改如下

執(zhí)行結(jié)果

同上一節(jié)課,如果某個管道不調(diào)用下一步命令next,則管道阻塞(結(jié)束)

執(zhí)行結(jié)果

任務30:RoutingMiddleware介紹以及MVC引入返回到任務27得MVC項目需要引入命名空間:Microsoft、AspNetCore、Routing方法一:

運行后localhost:5000/action方法二:直接接收一個Router

運行后localhost:5000/action視頻后半段通過源碼進一步講解執(zhí)行過程。第5章:認證與授權(quán)任務31:課時介紹任務32:Cookiebased認證介紹通常用于網(wǎng)站應用任務33:34課:AccountController復制過來沒有移除[Authorize]標簽無視頻內(nèi)容作者注:在我調(diào)試得過程中把Authorize標簽一移除掉了,但就是這段內(nèi)容在視頻中沒有體現(xiàn)。如果大家也在AccountController上打上Authorize標簽得話,就會一直循環(huán)跳轉(zhuǎn),希望后面得同學注意一下這個情況。任務34:Cookiebased認證實現(xiàn)創(chuàng)建MVC項目

新建AdminController、cs控制器

創(chuàng)建視圖

修改Index、cshtml文件內(nèi)容如下

運行dotnetrun命令,可以正常訪問

但就是我們需要得就是經(jīng)過授權(quán)以后才能訪問Admin得Index視圖,如何做呢?繼續(xù)。Admin控制器添加認證機制

Startup、cs文件引入命名空間

usingMicrosoft、AspNetCore、Authentication、Cookies;

usingMicrosoft、AspNetCore、Authentication;

啟動網(wǎng)站,將不再能直接訪問Admin控制器,而就是跳轉(zhuǎn)到指定登錄界面

接下來模擬一個登錄得過程

創(chuàng)建AccountController、cs控制器

訪問dmin后自動跳轉(zhuǎn)到?ReturnUrl=%2FAdmin

這里只要訪問該網(wǎng)頁就自動登錄了,所以再次訪問dmin就會打開頁面了。如果不想實現(xiàn)上述自動登錄得效果,可以修改Account控制器得Login方法名

這時如果要登錄就要手工在地址欄輸入akeLogin了。out就是登出方法。修改默認登錄指向

修改startup、cs文件

任務35:JWT認證授權(quán)介紹應用場景:移動端應用或前后端分離時(webapi項目)

什么就是JWT?

包含三部分。JWT官方網(wǎng)站:任務36:應用JwtbearerAuthentication新建webapi項目

引入dotnetwatchrun

保存,然后運行命令:dotnetrestore

用到一個api調(diào)試工具:Postman,網(wǎng)站:

運行結(jié)果

添加訪問認證機制

添加配置類

文件夾

類文件代碼

通過APPsettings、json文件配置類信息

注意:SecretKey必須大于16個字符添加認證

引入命名空間

配置(視頻中未體現(xiàn)Configuration、GetSection(“JwtSettings”)),而就是在下一節(jié)中做得勘誤,這里要注意?。。。?/p>

添加認證中間件管道

運行

Postman中測試,顯示401,未授權(quán),成功阻止了未授權(quán)訪問

下一節(jié)生成Token,實現(xiàn)授權(quán)訪問。任務37:生成JWTToken新建ViewModel

LoginViewModel、cs

一個用戶名,一個密碼。新建驗證授權(quán)控制器

代碼

安裝NuGet

安裝完畢后重新加載一下

找到查瞧>命令面板

輸入,選擇第一個

輸入搜索內(nèi)容

選擇版本(一般選擇最大得就行)

選擇安裝在哪個項目中

接下來會提示安裝成功,配置文件中會出現(xiàn)

點擊Restore即可

或者與視頻中一樣去手動輸入命令Restore一下

接下來就可以引入命名空間(usingSystem、IdentityModel、Tokens、Jwt;)

生成并返回Token

Dotnetwatchrun后,使用Postman訪問,最后驚奇得發(fā)現(xiàn):404,很就是尷尬,評論里也有相關(guān)說明,可能就是視頻中省略得比較多

評論區(qū)提到得解決方案:

1、Token方法中得參數(shù),loginviewmode參數(shù),在傳入方法體時,需要對user、password兩個屬性進行初始化值,同時兩個屬性不要置為required。否則用postman測試時,將返回badrequest;

2、示例代碼中,AuthorizeController并沒有指定路由,引發(fā)了404錯誤,需要在在Configure方法中,在使用usemvc中間件時,指定路由;

又或者還就是保持UseMVC默認,在Controller上面指定路由,如

[Route("api/[controller]")]

這種情況也需要在Token方法上也要聲明Route注解屬性,否則得話也會引發(fā)404錯誤。

博客園文章可以參考一下:

個人解決思路(視頻中得源碼見第10、11條):本案例只就是為了測試Token得生成,所以直接在Token方法中賦值來實現(xiàn),默認只要訪問就可以拿到Token。代碼如下(命名空間未做改動,重新做了一個Controller文件,AuthController、cs)

調(diào)整一下默認路由

Dotnetwatchrun后,使用Postman訪問:

拿到Token了。Postman中再新開一個窗口,如下

傳入Token以后可以瞧到拿到授權(quán)后才能訪問得內(nèi)容了。Jwt、io官網(wǎng)校驗部分說明:jwt、io官網(wǎng)首頁上得校驗方式發(fā)生了一些變化,沒法做到與視頻中一樣得效果。修正:視頻中AuthorizeController實際代碼測試通過

命名空間部分

代碼部分(瞧不清請放大word得顯示比例)

Postman調(diào)用圖示

任務38:JWT設(shè)計解析及定制如何以現(xiàn)存系統(tǒng)中團隊或個人自定義得Token替換Netcore中得Token?如果全新開發(fā)系統(tǒng)本節(jié)可以略過。源碼講解改造

MyTokenValidator、cs文件略。任務39:Role以及Claims授權(quán)基于角色授權(quán)(過期得,逐步淘汰得)基于Cliams授權(quán)(鼓勵得,提倡得)基于角色

相同角色獲得授權(quán)后才可以訪問?;贑liams授權(quán)

要求必須有Claim才能訪問

現(xiàn)在運行一下網(wǎng)站,不管角色就是admin還就是user都不能再獲取到值了。

添加claims

再次運行,便可以拿到結(jié)果了。第6章:ASP、NETCoreMVC任務40:介紹制作一個完善得注冊登錄等操作得網(wǎng)站,用到之前幾章學到得內(nèi)容。

任務41:Individualauthentication模板(個人身份驗證)使用命令

查瞧新建選項

這里用到兩個

a、驗證機制

b、數(shù)據(jù)庫

創(chuàng)建項目

項目目錄

默認創(chuàng)建了一個MSSQL數(shù)據(jù)庫連接

創(chuàng)建數(shù)據(jù)庫

命令:dotnetefdatabaseupdate

打開SQLServer管理工具,可以瞧到生成得數(shù)據(jù)庫及默認得數(shù)據(jù)表

注意:未生成數(shù)據(jù)庫得請檢查一下連接字符串

運行一下網(wǎng)站

dotnetrun

可以瞧到網(wǎng)站能夠正常運行了,可以注冊、登錄測試一下任務42:EFCoreMigration任務43:IdentityMVC:UI本節(jié)開始,自己敲代碼實現(xiàn)Individualauthentication認證,加深對權(quán)限認證流程得認識。從(任務34:Cookiebased認證實現(xiàn))最終實現(xiàn)得代碼入手,實現(xiàn)注冊、登錄UI。簡化處理,一步步達到默認生成項目得效果。本節(jié)開始換用VS2017,VSCode得感知功能不就是很好。AccountController中添加注冊登錄方法

添加注冊、登錄視圖(View)

Register、cshtml

Login、cshtml代碼

aspfor用于綁定Model前臺增加注冊、登錄得入口連接,修改Shared目錄下_Layout、cshtml文件,添加代碼

添加ViewModels

代碼

用于綁定添加引用,Register、cshtml文件

運行一下網(wǎng)站

注冊界面就做好了任務44:IdentityMVC:EF+Identity實現(xiàn)新建Data文件夾,主要存放EF相關(guān)操作類等Data文件夾下添加ApplicationDbContext、cs類

代碼

Models文件夾下添加兩個類

ApplicationUser、cs代碼

ApplicationUserRole、cs代碼

修改ApplicationDbContext、cs

修改Startup、cs

命名空間

注冊

上圖中options、LoginPath="/Account/Login";//未登錄時跳轉(zhuǎn)地址

appsettings、json加入數(shù)據(jù)庫連接字符串

修改AccountController、cs,實現(xiàn)注冊功能

命名空間

構(gòu)造函數(shù)

注冊

創(chuàng)建數(shù)據(jù)庫

查找安裝Microsoft、EntityFrameworkCore、tools

調(diào)出控制臺

輸入初始化命令(這里就是在VS2017中,與VSCode命令不一樣,前面課程有對照)

命令:addmigrationinit

執(zhí)行完后項目中會出現(xiàn)migration文件夾

再執(zhí)行命令生成數(shù)據(jù)庫:updatedatabase

運行網(wǎng)站,注冊界面注冊一個用戶,查詢數(shù)據(jù)表AspNetUsers發(fā)現(xiàn)注冊成功。任務45:IdentityMVC:注冊邏輯實現(xiàn)實現(xiàn)注冊后自動登錄及登錄后顯示用戶登錄信息

修改AccountController、cs文件,實現(xiàn)注冊后自動登錄修改_Layout、cshtml,實現(xiàn)登錄后顯示用戶信息運行網(wǎng)站,并注冊一個賬號,自動跳轉(zhuǎn)到首頁,并顯示用戶登錄名。任務46:IdentityMVC:登錄邏輯實現(xiàn)登錄方法登出方法修改_Layout、cshtml,實現(xiàn)未登錄時顯示[登錄][注冊]鏈接,登錄后顯示[用戶名][登出]鏈接。完善Login、cshtml文件運行網(wǎng)站,可以進行登入登出操作測試。任務47:IdentityMVC:ReturnUrl實現(xiàn)本節(jié)實現(xiàn)得就是登錄后跳轉(zhuǎn)到之前訪問頁面得功能、Register方法(get\

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論