从浅入深了解.NET Core MVC 2.x全面教程【第一章】

章节

第一章:https://www.cnblogs.com/kimiliucn/p/17611047.html
第二章:https://www.cnblogs.com/kimiliucn/p/17616708.html

一、基础

1.默认配置

  • 使用Kestrel Web Server
    • ASP.NET Core内置——跨平台
  • IIS集成
    • UseIIS()
    • UseIISIntergration()
  • Log
  • IConfiguration接口

2.IConfiguration配置信息的来源

  • appsettings.json
  • User Serets
  • 环境变量
  • 命令行参数
  • XML...

3.管道

image.png


4.MVC

image.png


5.路由Routing

  • Concentional Routing
  • Attribute Routing

6.返回View

  • Razor引擎
  • Controller——>ViewResult——>HTML页面

7.ViewModel

image.png


8.怎么使用Tag Helper

1.在【Views】文件夹中创建一个【Razor 视图导入】文件。
image.png
2.在这个文件中导入TagHelper
image.png
3.然后在视图中使用
image.png


9.输入的Model

  • Form
  • 导航到含有Form的View

10.ASP.NET Core MVC-Form

  • Http Post

11.如何使用EF Core

1.先在【appsettings.json】文件中写上连接字符串,将"xxx"替换成自己对应的数据。

  "ConnectionStrings": {
    "DefaultConnction": "Server=xxx;Database=xxx;User Id=xxx;Password=xxx"
  }

2.需要安装这些包。
image.png
3.写一个【TutorialDbContext.cs】类,该类需要继承自:DbContext
image.png
image.png
4.在【Startup.cs】文件中注入服务。
image.png
在【ConfigureServices】方法中。
image.png
5.使用EF Core进行迁移,在【程序包管理控制台】输入2个命令即可。
image.png
然后会生成2个文件
image.png
可以看到已经生成了这个数据库了
image.png


12.Partial View

  • 复用View代码
  • @Html.Partial("_PartialViewName",data)
  • 没有自己的Model
  • 可以嵌套

13.View Components的特点

  • 可复用
  • 独立的组件
  • 有独立的逻辑/数据
  • 相当于迷你MVC请求
  • 不依赖于父级View的数据

14.在VS中如何使用NPM安装前端库

  • 新建一个Npm配置文件

image.png
image.png

  • 输入需要引入的库,比如我需要引入【Bootstrap】

image.png

  • 可以看到已经安装好了。

image.png

  • 这是物理文件路径。

image.png

  • 让系统伺服这个文件夹。

image.png


15.使用前端做数据校验

  • 引入Npm库

image.png

  • 在项目中引入刚刚导入的库

image.png

  • 然后前端自动起作用了(最好使用CND,速度快)

16.如何在不同的环境引入不用的库

image.png
如果CND无法访问,挂了;就加入这个回落机制。
image.png
image.png
判断Bootstrap
image.png


17.ASP.NET Core Identity

  • 身份验证和授权系统
  • 成员管理
  • 默认使用MS SQL
  • 支持外部的Provider

18.如果有多个DbContext,需要指定某一个。

image.png


19.Claim

  • 一部分信息
  • Name-Value
  • 可以来自内部或外部
  • 基于策略的(Policy)

20.Prolicy策略

  • 注册policy
  • 使用policy进行授权

21.Policy内置的方式

  • RequireAuthticatedUser:必须登录用户
  • RequireClaim:要求特定的Claim和值
  • RequireRole:要求特定的角色
  • RequireUserName:要求特定的用户名

22.Policy自定义

  • ReuireAssertion
  • AddRequirements
    • IAuthorizationRequirement
      • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>
      • AuthorizationHandler<TIAuthorizationRequirement-实现IAuthorizationRequirement接口>
      • ...
      • 如果一个Handler返回了Succeed,而其他的都没有返回Fail,那么这个Requirement就被满足了。

23.XSS

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
image.png


24.不被信任的数据

  • HTML input
  • HTTP Headers
  • Query strings
  • Attributes,EXIF 信息

25.怎么防止XSS?

  • HTML Encoding:>变成$gt; <变成 <
    • Razor默认开启了HTML Encoding,但是可以手动关闭
  • 正则表达式
  • 反XSS的第三方库
  • 对请求进行验证

26.内置的编码器

  • HtmlEncoder
  • JavaScriptEncoder
  • UrlEncode

27.CSRF(跨站请求伪造)

image.png


28.OWASP的CSRF防范方案

  • Header验证:请求头
  • Synchronizer Token Pattern :用户每次请求时携带Token
  • Double Submit Cookie:双重Cookie

29.ASP.NET Core

  • [ValidateAntiForgeryToken]:针对一个Action
  • [AutoValidateAntiForgeryToken]:针对所有的Post
  • [IgnoreAntiForGeryToken]:取消

30.Model Binding

  • Model Binding允许我们用HTPP请求里的数据类创建C#对象,这个对象就是Action方法的参数。
  • 可以使用一下类型用来Model Binding:
    • int,string等简单数据类型
    • 复杂类型对象
    • 数组

31.Model Binder可以绑定哪些值?

  • Form的值(Body中的POST请求)
  • 路由的值
  • QueryString的值(URL地址后的参数)

32.Binding Attributes

  • Bind:有选择行的绑定属性
  • BindNver:可以放在Model对象一个属性上,表示不应该进行绑定
  • BindRequired:必须进行绑定,在验证的过程中不绑定就报错误

33.例子

1.在【ViewModel】中有一个嵌套属性。
image.png
2.在【View】视图中世界嵌套属性.属性。
image.png
3.在【Controller】中。
image.png
有选择的绑定属性,这个特性一般放在【Acion方法中】
image.png
[BindNever]放在ViewModel中。
image.png


34.指定Binding的来源,这是特性

  • [FromBody]:RequestBodys——请求的Body
  • [FromQuery]——QueryStrings
  • [FromHeader]:Request Headers——请求头找属性
  • [FromRoute]——路由
  • [FromForm]——表单的值

35.自定义验证Attribute?

1.新建一个类,这个类需要继承【Attribute】,需要实现【IModelValidator】接口。


36.远程调用-特性

  • [Remote]-客户算调用Action方法进行验证。

【在前端直接调用后台方法进行验证。】
ViewModel
image.png
Controller
image.png
image.png
View
image.png


37.Tag Helpers

  • Tag Helpers是服务器中的C#代码,他在Razor文件里,他会参与到创建和渲染HTML元素过程。
  • 和HTML Htlpers类似。
  • 跟HTML的命名规范一致。
  • 内置了很多Tag Helpers,也可以自定义。

38.JavaScript Tag Helpers

  • asp-src-include:导入文件,如:javascript
  • asp-src-exclude:将不想加入的文件加入
  • asp-fallback-src:回落机制(调用不到了[asp-src-include]文件然后就调用这个中的)
  • asp-fallvack-test:具体的

image.png
image.png


39.CSS Tag Helpers

image.png


40.其他的Tag Helpers

image.png


41.环境相关的Tag Helpers

image.png


42.自定义的TagHelpers

1.继承Tag Helpers父类,实现(Override) Process这个方法。
image.png
2.注册Tag Helpers
image.png
3.视图中
image.png
4.最后生成
image.png
5.1如果我想添加一个属性,以“-”分割大小写
image.png
5.2在这个类中添加一个属性
image.png
6.1如何直接使用下面这种方法实现上面的内容?
image.png
6.2使用【异步】的方式
image.png
7.1如果想添加一个既做为【属性】又作为【元素】的TagHelpers?
image.png
7.2代码
指定目标元素,"或"的关系,只要符合其中一种即可。
image.png
image.png

8.1如果我想添加一个颜色?
image.png
8.2添加一个属性,名称可以不一致,添加一个特性即可。
image.png
9.1如果改成类?
image.png

image.png
9.2设置属性、设置Attribute。
image.png


43.Tag Helper前缀

//加上前缀就起作用了,不加上就不起作用。
image.png


44.View Component

  • 显示部门内容
  • Mini Controller
  • 可复用
  • 只能配合父级Virew使用。

45.View Component分成两步

  • 首先需要继承ViewComponent父类
  • 实现Invoke()方法
    • 也可以是异步的:InvokeAsync()
      • 返回IViewComponentResult

下一章节:https://www.cnblogs.com/kimiliucn/p/17616708.html
原文链接:https://www.cnblogs.com/kimiliucn/p/17611047.html

posted @ 2023-08-07 11:59  西瓜程序猿  阅读(120)  评论(0编辑  收藏  举报