netcore2.0快速入门笔记_第1页
netcore2.0快速入门笔记_第2页
netcore2.0快速入门笔记_第3页
netcore2.0快速入门笔记_第4页
netcore2.0快速入门笔记_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Asp 、net core2 、0 默认教学计划基础入门篇笔记 又名七日速成 本笔记就是个人学习期间整理 ,因水平有限 , 不对之处敬请指教! 教程分初级篇、高级篇。本文都就是基于该视频教程整理, 这就是基础篇 ,购买 高级篇得基础篇自动就可以瞧了 ,不需要单独购买基础篇 ,付费后会邀请加入微信讨论群 像张善友等大佬都在其中。视频地址在文末。 第1 章: 介绍与引入 任务 1: 课程介绍 学习的内容 第TASPNET CORE 应用働 丁控制台创建第一 core的应用和项目Layout说明 “ VS2017创ilf 应用用IIS Express行,并Deploy到IIS “ Deploy 应用

2、程序到 CentOS,用 Kestrel ASP.NET Core ;#S ASP.NET Core MVC V Nginx + Kestrel on CentOS “ What is ASP.NET CORE and How it works? 7 Configuration 的介绍 “命令行配賈的使用 Json文件配置的使用 Bind才及Options的用法 “配文件同步 “依赖注入介绍 “依赖注入的使用 “替唤Build-in的依赖注入 认证 授权 V Hosting 介绍 丁 M ddleware 介绍 “ Pipeline介绍以及在f空的管道上响应谓求 V 创建自己的Middlewa

3、re 丁 Routing “ ASRNET Core MVC Sample with EF Core V Razor Tag Helpers V Model Binding 丁客户端与服务端Model验证 “ Filters “ WEB API “认证介绍 v Cookie Based 认证 v JWT BeareriAliE /授权介绍 a Role Based 授权 “ Policy Based 襪权 任务2:环境安装 VS2017 + ASP、NET Core 2、0 任务3:在控制台创建 ASP、NET Core应用程序 控制台下创建 ASP、NET Core应用程序得常用命令学习 任

4、务4:在VS2017 中创建 ASP、NET Core 应用程序 略。 任务5:部署到IIS IIS环境配置。 任务6:准备CentOS 与Nginx 环境 虚拟机安装CentOS,安装网卡、Nginx,开启、s,开启80端口命令。 任务7:在CentOS 上安装、NET Core 运行时 微软文档: 任务8:部署到CentOS FTP上传至服务器;Nginx 80端口映射至、NET Core得端口,如5000端口,实现转发 第2章:配置管理 任务9:配置介绍 配置-介绍 -命令行配置 Json文件配置 *从配置文件文本到C#对象实例的映射-Options与Bind 配置文件热更新 * 框架设

5、计:Configuration 任务10:命令行配置 1. VS2017创建控制台应用程序 2. NuGet 引用 microsoft、aspnetcore、all 程序包 3. Usi ng 命名空间,定义 builder,拿到 con figuration 4. 修改程序,使用默认值 5. 运行示例:程序目录 dotnet mandLineSample dll n ame=jim age=22 二. Q I- MJE-rrs1 D: prQjct Vw f ter* Ccnf 11Saq?! mi rwSvl vvwt cnappZ 0 _3 or*ipp2. 0)dlr t:Jc t W

6、xc or nf 1wcouuidL 1 nt -lbl n mwi 0 E 目录 iv wioi? U:4T 11/10/2017 11:*7 U/W2017 Ll:47 tl/10/2017 U:V !/ W17 IP47 ni/C/2D|7 ll:47 1V1G/5O17 ei肋 aw 2N, 355 GnikLjrai 5 120 GMunlineSiMila*, dll 4. 注意数组得得读取方法 7 e 9 10 12 12 4 15 用 17 n 22 再 34 1 Busing System, usin Microsoft Extendi oris Cotifi juratio

7、n; -namespace JsonTest 0个引用 clas Frog:!an 0个引用 static void Mam (string var LuiIde r = neuF C onf i gu.r atzL onQu.11 tie r () -Ad町sonFile Cj son | var configuration = buildeBuild.(),. Console. WriteLine($*ClassNO: ccnf iguratrati ClasslJO ); .Linsol b. Vlri_teLine($ ClassDSC: coniurati on Cl assDESC

8、 ); Conscle. Vritc (cent igux act ion St-udents: 0: naae): C0113011 - W lleLina (conf igur ation,v Students: D: age17 ); Console* Wr lie (conf lgurat-ion Stuien+s. 1: naae*); CoelsoIb. Vlri七点1:0 Con.scle Vritc (conf iguxaction St-ud.ents: 2: aaie): C0113011 - W11 eLina (conf igur ation,v Students: 2

9、: age17 ); Conscle. ReadLine 0 ; 任务12: Bind 读取配置到C#实例(MVC架构实现) 通过Bind方法将、json配置文件内容映射(赋值)到、class实体类 1.类 B using Systejn, using Systen. Colle匚t lonm- using SystemLinq; using System. Ihreadins* Task$; -nanaspace BindOptionsTest I 1吓引用 - ptibLic class Class I 彳 1个引用 public int ClassNof jet; set: 1 :!1个

10、引用 public string ClassDesc set: set: 1 j 7个弓I用 puhlic Listjt-identE/- get; set: 1 1 1个引用 public class Students I :3个刖用_ public 却七ring Nsdie get; set-: :;3亍引用 public xnt Age jat ; set; 2. Json文件 1 2 3 TlassNo*: CLassDesc : asp九点弋 core 】.U Students: 6 7 9 9 0 n-ame :dj d. 7 age : IS L 2 3 4 5 vdjd2 U2

11、B 扎 nans*: djd3, -Mjm r 戸 age :36 3. program 文件中 WebHos、 力口入到配置池中。 CreateDefaultBuilder(args) 语句自动将 settings、json 文件 4. Startup 构造函数 rr个引用 public class Star七up ;2个引用 public ICfiif iguiration CDiif iuratiooi get,; set; ;个引用 public St ar tup (IC onf i gur j.t 1 on conf iu rat ion) : Configuration = 匚o

12、nfijuration: 输出 app. Run (async context f var nyclass = ne艸 l 亠p ; Conf 1 juration. Einrifityclass): await context. Response, VfriteAsync (niyclassCLaEsNo. ToStriria:); await contexts Response. Writ6Async (myclass*ClassD awitcont-est. Respaiise. Write Async (myclass- StuHerLt-s 0.Ae, T oStr ing ():

13、awaitcontext. Kespo口百巳 甲匕iteAsync (myclass. Students 1 rToStrinj(): await context Keep once- Write Async (myclass* Students 1 AgSi ToStringO: await context. Response. VfriteAsync (myclass. Students 2. Nams. ToString (); awai七 cantex七.Response. Wri七点直已! (m萝ul丑乞m-Studen七m 2 . Ae. ToStr ltig ()5 : ): 任

14、务13:在Core Mvc 中使用 Options 通过Options将、json配置文件内容映射(自动匹配)到、class实体类 1. 建立 MVC架构,如Controllers、Views等文件夹 2. 创建控制器、视图页 控制器依赖注入 I- name space BindOptionsTest, Contrail ere I ;1个引用 public class HaoeController : Controller private readonly.jnyclass : D个引用 public MomeCantrollet (IOpt ioni optioiiE) _Kyclass

15、= options. ITalne : :D 4引用 public IActicmResuit IndeK () return View(_myclass); 视图页调用 Snuodel BiiidCipt.Lon.sTest. Class ViewData Title = Index7; 5 6 7 g 9 u 1 2 3 4 J Vh4 XSMq del. C J包曲 K q (SKq del. ClssD esc S oieach (var student in Mode1Students) s t u denC* Mane student* A3 1 3. 将配置文件数据匹配到实体 p

16、uhlc wtid CinfigxirE Ser vices (iServiceColLec tion. services services. Conf lgureC 1 a5siCanfiguration :牛里解:Mconf iguraticm中腆射Class services: 1 4. 引入中间件 services、AddMvc默认路由 app、UseMvcWithDefaultRoute; 任务14:配置得热更新 热更新:即修改相关配置文件(如appsettings、json等)不需要重新启动应用程序就能读 取到最新得配置信息。 热更新默认就是开启得,但就是要将Ioptions替换为

17、IoptionsSnapshot后才能 读取到最新配置信息。 /IOptio ns public HomeC on troller(IOpti onsSn apshot opti ons) 在控制台应用程序中,Add方法(如AddJs on File等)得第三个参数默认值为true, 即启用热更新功能 vi- urv 匚二山丄蛀 utilhLkA血丄 0 * 住时TjtflnFili?厂厂1 n : 7onrole Wit cline (I11 C1 assDESC conf igurat icntCLassDESC11); Console, Write (configurationEu St

18、udents. D: nauieu), Console WiteLine(ccrnf iguration wStudents: C: agev ): Console Writ Consol6 Writelinetcanfiguration Students: 1: ageJ ): Console, Write (conf ig:uratioinu Stud史nt占.2: nane). .-on5o_e. Witeline tccrnf ijuration Students: 2: ageJ,): 匚onsole. ReadLioe0 ; MVC中关闭默认热更新得方法,修改Program、cs文

19、件,如下: public class Ptogi:述 0个引用 public static void Iain (st ring ars) BuildVebHoSt- (args). Run(): 1个引用 public static IebHost BuildlebHost(string args- IVebHost. C e t at el ef aultB wilder (arjs) ,Conf i gure App Conf igur at ion (conf ig =O config. Addjo(nFile (wappsettings. jsan*= false, ffalsei

20、: 门 .旳胡tart旧辭竝utup(畫写方法,覆盖默认配首 .BuildO : 任务15:配置框架设计浅析 1. 创建:配置建造器(ConfigurationBuilder) 2. 准备 source(json,内存,xml 等等) 3. 将source资源指针(文件名)添加到ConfigurationBuilder,此时只就是将所需得资源 罗列给配置建造器(ConfigurationBuilder),并未真正加载。 builder、Add( source ”) 4. 实例化配置文件:var configruation=builder、Builder 将所有source内容加载到运行时得配置

21、文件中configruation 5. 获取配置文件中得数据内容。 ? configruation key”或数组 configurationStudents:O:name/直接使用 ? services、 Configure(Configuration)/Ioptions方法 Configuration 、 Bind(myclass)/Bind 方法 配置-框架设计 vau bulldr = new ConfigurationBuiLdrO builder_ Add (source); ? vaiL configiirat jonRoot * builder. Bui ld(); confi

22、gurat icnRootpKey 现有Source及支持驱动,如果需要自定义,必须继承相应得接口去实现。 配置-框架设计 A honConftgurationPruvider XmlConfigurationPruvider 第 3 章: 依赖注入 任务 16: 介绍 简易理解 : 来自: 背景 :需求发生变化得时候 ,代码就是肯定需要改动得 ,那么怎么改 ,改哪里就有技 巧了。使用依赖注入得方式可以保证代码得改动压缩在最小得范围之内。这大概就就 是 DI 出现得原因。 概念 : 依赖注入 (Dependency Injection) 就是用于实现控制反转 (Inversion of Con

23、trol) 得最常见得 方式之一 。 (要注意得就是 ,依赖注入只就是控制反转得一种实现方 式。控制反转还有一种常见得实现方式称为依赖查找。 ) 依赖注入 (DI) 与控制反转 (IOC) 基本就是一个意思 ,因为说起来谁都离不开谁。 解析:简单来说,A依赖B,但A不控制(A得代码段不会出现)B得创建与销毁,仅使 用B,那么B得控制权交给A之外处理,这叫控制反转(IOC)。 而A要依赖B,必然要使用B得instance(实例),那么 ? 通过A得接口,把B传入; ? 通过A得构造,把B传入; ?通过设置A得属性,把B传入; 这个传入过程 叫依赖注入 (DI)。 那么什么就是 IOC Conta

24、iner ?(IOC 容器 ) 随着DI得频繁使用,要实现IOC,会有很多重复代码,甚至随着技术得发展,有更 多新得实现方法与方案,那么有人就把这些实现IOC得代码打包成组件或框架,来避免人 们重复造轮子。所以实现IOC得组件或者框架,我们可以叫它IOC Con tai ner。 视频作者文章 : 视频作者文章精要 : 一个设计原则 :依赖于抽象 ,而不就是具体得实现。 容器负责两件事情 ?绑定服务与实例之间得关系 ?获取实例,并对实例进行管理(创建与销毁) 注册 V aj 1 Mapping 映时 !崟例j零纯仙kxn 在、NET Core中DI得核心分为两个组件:IServiceColle

25、ction 与 IServiceProvider。 ? IServiceCollection 负责注册 ? IServiceProvider负责提供实例 、NET Core DI为我们提供得实例生命周其包括三种: ? Transient:每一次GetService都会创建一个新得实例 ? Scoped:在同一个Scope内只初始化一个实例,可以理解为(每一个 request级别只创建一个实例 ,同一个request会在一个 scope内) ? Singleton :整个应用程序生命周期以内只创建一个实例 Transient 1 Transient 2 Scoped 1 Scopel Rtrfi

26、me Singletonl jes 建议先瞧文章,因为视频主要以补充文章内容为主。 依赖注入_介绍 1. 依赖注入概念详解 -从uML和软件建模来理解 -从单元测试来理解 2. ASP.NET Core 源码解析 任务17:从UML角度来理解依赖 1. 什么就是依赖(见图) 2. 显示依赖与隐式依赖 隐式依赖: pvbl ic 丨“:-1 Addi. - iHodel. -i - l custotur) if (!ModelState. IsValid) ret urn BadRequ*:t(ModelStat el: II 隐式依報写法 var context - n*ir( t.(ne D

27、 : -lu :; t. j(;:,: * :*: t 贞t j ;); m result = cQfiiextrCustciLers. SingeOjUfaul t (c = c. Phani* -= cuEiontir. Pliouio, if (result != null) return BadRequest (nmr ( code= 1001. dk怎 J context.匚Uitomrs, Add Fcustomprl: context. SoveChanges1); re turn OfcO; 显示依赖:(优点:清晰、统一,但未实现控制反转) public Cl353 (.U5*

28、 .Kl I C tiltOll.-: : I. 15 1 jl 1 CI pT:L 盒 i I: 1 i : _(Xir?XT : public CustoiietentrifItValjd) return BadReqvcst !Mo4elState): rar result3tenors. mlOrDefault1 c - c* Phone cuton-r. Phone ; 3. 依赖倒置原则: 概念:高层业务不依赖于低层业务得具体实现,而依赖于具体得抽象(接口 )。 应用场景:底层业务发生变更时,上层代码不需要改动。例如当MSSQL变更为 MYSQL 时。 争议:一般得类就是否需要写接

29、口呢?我得类不能能变动那么快啊?不能一会就变 成另一个数据库了呀?所以没必要。 答疑:进行单元时,就就是一种替换持久化得操作,所以,建议使用接口。 U ML软件建模 1.什么是依赖? CustomcrController 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常觀 的,但是B类的变化会影响到A; ICuftomrRpository 2. 显式依赖与隐式依赖 3. 依赖倒置原则 usto merRepository: IC ustomerRepository Oft 伙 l(i 玳 id): GttByWGnt Id): Custonwr Gt

30、8yPhon(striog phone): Customer ln$trt(Cu$tomer customer): void EfCustomtrRepotitOfy .CustomerCootext: DbContert * GetByldGnt Id): Customer Get8yPhorw($trin9 phone): Custorrwr InwrtfCustomtr ojstomer): void MemoryCuttormrRepotitory list list GetfiyWQrrt kft Customer GttfiyPbog phontk Customer ln$ert(

31、Cu$tomer cu$tonw):.vQid 任务18:控制反转 注意:控制反转不就是依赖倒置! 依赖倒置:强调要依赖接口而不就是实例。 public class CustoaerControll*r : Cootraller t lb private:-Rvpo j _customerRepository; 父 匕 依戦于接匚.所饮实现了依戦劃置 public CustotnerControl 1 er0 控制反转:强调仅使用依赖而不去管依赖得创建、销毁等操作,依赖得创建、销毁交到外 部(容器)去管理。 改进后,实现了控制反转,如图: publ ic class Custoffi-iCon

32、Tioi Ir : Ct nt to 11 ?r private I: ;c: _customerRepository: 5牛引用10 ft构造函数传入(注入)方式 pub 11c CustoaerController IcustooerRepos: torvf _custoHerRepositorv = cust oarRpo si torv: I 任务19:单元测试 创建单元测试,请瞧视频。 依赖注入在单元测试中体现出了价值。 任务20: DI初始化得源码解读(理解不了也要过一遍) 源码解析 services = BuildCommo nSErvicE(J New ServiceColle

33、ctionQ Build var host = new WebHostQ hostinitf) EnsureApplicationServiceQ EnsureStartupO ISrvicePi ovi der servicePiovider .startup*Configin *Sprt ices(_ppl itaU onS?i vi( WebHost.C r eteDef aultEuildr(ars) .totifigur eAppUonf 1 gurat ion (config = : uonfng AddJsQnFile(settings, jmoil): config AddCc

34、unjiandLine (aigs) : | i ) UseStartupOr artup .EtiiltK?: 3. 新建 settings、json 文件 * De fault 匚 oimEUtimia; S 引入命名空间:using Microsoft I y i|yj* j j public vozd Confzguxe(EApp 1 lcat 1 DriZ!;4LLisr app ffibingEnviroor.ent criv, 11 I: en.v_ 1 空Li eve 1 fipneiaT C) UeDcvelupezExceptiotiiPace(), 11 avait co

35、wtstH Rffspcnso. VriteiLsync (ff3nfisurQfti(jnACctiQi;rtr ji;ca Dof mltCnnQC 1 : 薪出特制台蹴芒内容 avazi- c out ait. Re sppnE: b s rit eAsyn-z ( 口3m.e= conf xgirsfticiri nsjueJ; 运行结果 6. 7. 配置默认启动 URL 修改program文件 厂r个可用 public static lWeb?iciEt BuildWebHost(string arg2)- Vi?bHo3+ . GreateD :) 17吕eUitI s (htt口

36、 /1 dualhast: 5001) UseStartup () .Build (). 但就是修改后再通过vs启动就不能自动打开浏览器了,需要自己手工输入 解决:此处不要添加这行代码,而就是在项目属性中去修改 URL WEbHo contrat. Response.WriteAsync ($wJljjp 1 irti nr.Jfp= jemr. Ajp 1 icationKan p ; caritest* Respcues- Writ eAsync (4 VebEactPntk= env. UebE口clPutL -); | 输出 local host: 5 002 | 0最常谕问 巴火孤直

37、右站点 吃新手上路 已箒用网址 JD 耘商城 Server (localdb) M.SSQLLocalDB;Databas Trusted_Connection=True; Mui tipi eAc tiv eResul tSe t w=trueEnvi r orunentName-Deve 1 opment ContentRo tPath=D: cs2Conso 1 eApplIebHostTest App licati DnNaioe 二 W ebHos tTestW ebRo otPa th-D: cs2C ons ol eApp 1W ebHc stTest wwwroot 2. la

38、pplicati on Lifetime 几个事件 public void CatiipLE*IpplL:iitidESiLldA-f ap,. !N*suh|EnrLrotxuErt ew. IC uifigur-arti cm. cnnfigLUfal i.dd| . .4 . j if W.( I flr.r % Vrittliiw f :柄 ippl亡址h沁 tU ttlXft- Afrf lltitl iffiSt trpCnEd.STc 1:(0 $ 1: ). Stopped 执行顺序 rl- / o V/ebHostTe5t ocplicatisiL Lf/宅:jlc- 2c*

39、? Li匚?nppiQi-.: ) iHasting environnsm: Development ntent root path: D:cs2ConsoleApplebHostTest Niw listening on: http:/localhost:5002 Application started- Pressto 訪ut down, if : Hi.crasoft. AspNetCoTe. Hosting I nternal. lebHast 1 Request starting HTTF/1. 1 GET httr: /localhost:5002/ Info: ILcrosoft

40、. AspNotCare. Eosting. Internal. WebHcst2 Request finished in 68. 7282ms 200 Application is shutting down 作者关于 WebHost得文章,可以深入学习一下: 任务26: dot net watch run 与attach 到进程调试 这一节用到VS Code软件讲解,主要就就是一个调试技巧 1. 安装VSCode、Git软件 下载安装都很快,不像VS似得 2. 新建命令:dot net new web-name HelloCore 新建一个空得MVC网站 3. 运行命令:dot net r

41、u n 浏览器中手工输入5000端口下运行。 4. 调试(修改文件后自动重启运行网站程序) 修改:、csproj文件 加入:vDotNetCliToolReferenee Include=Microsoft、DotNet、Watcher、Tools Version=2 、0、0 / 5. 使用命令:dot net restore 来 Restore packages,VS 中应该可以自动 Restore packages 6. 使用dot net watch run 运行程序 PS D;c53HelloV5Code dtnst watch run 汇Started Hosting enviro

42、nment: Pradurtion Content root path Now listening on: http: /lccaihost:58|; | CTRL点击会打开网页 Application started* Press Ctrl+C to shut dour. in fo; Hit rosoft. AspNetCor e. Hostiiig. InternalwebHost 1 Request starting HTTP/1-1 GET http:/localhost:5000/favicon-ico inf : f41crosoft.AspNetCare.Hostinginte

43、rnalWebHottla Request finished in 31.S687ms 296 info: Mic rosoft. AspNetCor e. Hosting. Internal. WebHost 1 Request s-tarting HTTP/1.1 GET http;: 5000/ info: Hierosoft.AsipNetCore.Hosting”Internal,WebHost2 Request finished in94 3. 构建管道 app、use、app、 run void Corvfigure(IApplication Builder zpp, IHost

44、ingEnvironmen t env) app.Use(async (contextnext)= aviait context .Response ,Wri teAsyncfll 1111111111111); await next.Invoke(); ); app.Use(nsxt= return (context)= context-Response, WriteA5ync(*,2222222222,; return nextcontext); 打 ): await context.Response.blriteAsync Hello World! lllll1); ); 其中都有一个n

45、ext参数,管道一就是无返回值调用,处理完自己得业务处理,然后调 用下一个管道,管道二就是有返回值调用,自己不去处理具体业务,而就是将处理得业 务封装交给其她处理函数去做。 调用next则继续执行下一个管道,否则将终止执行。注意两图对比 public /oid ConFigure(IAppli匚日tionBuilderIHo51ingEnvironment en iT env.I() mpp . llEeDevelopertxceptionPagef ); app.Hap( /tasktheapp= theapp-Rurt(yrc context= dviait context 只启弓口011

46、弓启.ViritEAsyncCHp url); ); ); app-Usefasync (contextjnext)= await.Response.Writ await next(Invoke(); ); app.Use (next= return (context)= return contesrt.Respanse-WbiteAsync( /return ne3(t(context)i I ;fc 血;不调用n入则下一个管道就不会执行 app. Run(asyn匚(corrtE詆t)- awdit 斛阳:it context.ResponseWriteAsyncfMap url); ;

47、); app.Use(a5yn(7 (context auait context .Response_WriteAsync(*11111111111111114); await next 工门71 return (conteict)=-( cont ext.Rcspons|elWriteA5ync,2222222222; retu rn next(context); : ); app.Run(sync (context) await context. Response. WriteAsync( Helle World! Il ILIA); ); 运行查瞧: Q O D 0 h ttp:/l o

48、 ca IhostSOOOrts k 前演设卄亡Ivb猪济卧囿制作嵌心:曲 C# A O a【转截】从头扁写讣5在ASP,NET Cort中營 Wap ur1 Routing Middlev/are管道的实现机制 1. Rq uestDe I egate*-唸 2. ApplicaiiortBuilder Rtq ues pr i v i t i* res ido nly ILi st FuncRe mjiMnpnts 一 nevr L i st Finr t I ; 讲解源码,下一节将自动动手写源码 任务29:自己动手构建RequestDelegate 管道 这节课主要就是讲解自动写一个Re

49、questDelegate管道得实现方法,帮助理解执行过 程。 1. VSCode新建一个控制台项目 命令:dot net new con sole n ame MyPipeL ine VSCode打开文件夹 2. 新建 Con text、cs、RequestDelegate、cs 文件 Con text、cs 内容 using System; namespa匸e MyPipeLine 2 references public class Context RequestDelegate、cs 内容 using System; using Sy5tem*Jhreadine*Task&; names

50、pace MyPipeLine publicit Task RequostElgat匚onS)ct context); 3. Program、cs文件修改如下 / /接-R 0 references Joie_1麻卜 drg) 1 先使用 return context - Console.WriteLine( 1; return next.Invoke(context); ): Use(nej(t=-( return context = Consol*. WritcLinc (b,2; 卜色tur n next.Invoke(context); ; ): /再构運 fieqiithLLeleg

51、dte end=(context)=? Corsole.Wr*iteLine(Fenct *”); return TaskXtxipletedTask ; ; Sieverse(); /粉躬反活_ 1 /等十按沛加帼亭孤仃了 foreacfvar niddlware in Jist) e nt middleware.I nvoke( end); 撕亍 end.Invoke(new Context()1 Console.ReadLine(); 2 refenences public static void Use(Func RequestDelegate raiddleware) _llst.

52、Mld(nlddleware); 吟刊可一,宓讦廿 执行结果 4. 同上一节课,如果某个管道不调用下一步命令next,则管道阻塞(结束) Use(next= return context = Console. WriteLineCl*); return Task.Co叩1曲总终止执仃占坯菅ifi /return nextTnvoke(canteKt); ); 执行结果 问题 榆出羽试控制台翳 PS D; cs3VVPipeLine datnet run 1 2 end. PS D:cs3MyPipeLine dotnt run 任务30: Rout in gMiddleware介绍以及 MVC

53、引入 返回到任务27得MVC项目 public void ConfigurServices(ISeryiceCollction services) services.AddRouting();/步:注7踣由配置 需要引入命名空间:Microsoft、AspNetCore、Routing 方法 public :c ConfiguriAppllcatlcnBuiIder appf mootingEnvironment env) 门builder.MapG#t(action* isyrc cortext- djci: context.Resporse.WriteAsync(this is a act

54、ion); ); 32|/MapS也育義现路曲的效果,但足夏奈一点一般不用| -a p p.Map(T,/ra5k,1、Thcapp- ( thapp,Run(asyrc context- mw占it context.R RequestDelegate handler=context=JCQntext.Response.WriteAsync(HHthis is a action2)j /ar rDuter=iew Route( ne RouteHandler(handler, part iorT* app,Applicati N即万法也龍实现路由的孜具世是真杀一点一般不用 运行后 localh

55、ost:5000/action 视频后半段通过源码进一步讲解执行过程 第5章:认证与授权 任务31:课时介绍 ASPNET Coe认证与授权 1. Cookie-based认证与授权 2. Cookie based认证实现 玄丿wt认证与授权介绍 4. Jwt认证与授权实现 5. Jwt认证与授权 6. Role based 授权 7. Claims-based 權权 任务32: Cookiebased 认证介绍 通常用于网站应用 任务33: 34 课:AccountController复制过来没有移除Authorize 标签 无视频内容 作者注:在我调试得过程中把 Authorize标签一移

56、除掉了,但就是这段内容在视频中没有 体现。如果大家也在 AccountController上打上Authorize标签得话,就会一直循环跳转 希望后面得同学注意一下这个情况。 任务34: Cookiebased 认证实现 1. 创建MVC项目 PS D:cs3 dot net new nwc name CookeAuthSaniple 已成功创建模板ASP* NET Core Web App (Hadel -View-controller)Mo 2. 新建 AdminController、cs 控制器 using System; jsing SysCalleet ions I=%ZFAd m

57、I n 合 j 卜ttny/loelhgt氏 t*rvirA. AddMvc(); app* UseStaticFiles(); app. UseAuth entication(); 炼力口认证中间件管這 app+ UseMvcfrootes = routes. Ma fRoute( name: default temp late: co ntroGn=HorT1G3Ction=Index/ id?); ); 启动网站,将不再能直接访问 Admin控制器,而就是跳转到指定登录界面 7.接下来模拟一个登录得过程 创建 AccountController、cs 控制器 4/ing Wi new C

58、laia(ClainiTypes Marne,djd-) itz, Cldln(Cldlmryjes. Rul ddml i) j*- clainsTdertity-nevi Claius Identity (claims ,CookieAutkianticationDfauIts .Autheftiest ionSchnie): Httpcontext. 4ienlnAsync(toolcieAdtheriticationDe+aLilts -AuthenticationSchene ,neu Claifflsprlncipal(claLnsid1 ty); return 0k();打丰若于

59、 0 references public TActionRptult Lngnut() I Httpconteyr. bienoutASnc (LtEJkiefiuThnTlca tioriDefaulri .AurheiTlcaiiDnScrieBe): return 0k( 8. 访问dmin后自动跳转到?ReturnUrl=%2FAdmin 这里只要访问该网页就自动登录了,所以再次访问dmin就会打开页面了。 9. 如果不想实现上述自动登录得效果 ,可以修改Account控制器得Login方法名 0 references public lActianResult MakeLogin) .1 List claims var ciaims=npw Lit new CLaimfClaifflTypes.Nainej djd), new 匚laim(ClaimTypes.Role,admin) 这时如果要登录就要手工在地址栏输入akeLogin 了。 10. out就是登出方法 11修改默认登录指向 修改startup、cs文件 0 references public void ConfigurServices(I5erviceCollection services) . . . services.AddAuthenticationfCookieAuthenticationDefa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论