读ASP.NET Core与RESTfull API开发实战第八章

1.Http认证的常用两个状态码:

401未授权,说明登录信息无效。
403拒绝访问,登录信息正确,但权限不足拒绝访问

2.消息格式:

在消息头中Authorization:

3.认证常用三种格式:凭证不同,认证过程不同

a)Basic ,凭证中是用户名密码,一定要用https这种方式传输

b)Digest,凭证中包含信息和md5(类似支付中常用的md5验签)

c)Bearer,常用于Oauth2.0中,也常见于基于Token的认证中,常用的方式类似于Basic,所以一定要用https这种方式传输

4.Bearer认证

a)认证流程,从流程中可以看到解耦客户端与应用程序。

b)常见的两种Token类型:引用类型,自包含

引用类型:在服务端根据自己定义规则生成的字符串,通常存储在数据库中与用户信息关联
自包含:Token自身包含用户信息,服务端就不再需要访问数据库,JWT是最常见的自包含类型Token.

c)JWT组成

5.asp.net core中实现

单表数据量大的情况下,如果改表结构

问题:当单表数据量很大时,修改表结构,会有表锁让此表无法使用,也可能会操作超时,改表不成功。

1.加字段锁表时间非常短,选对运维时间加字段

2.删除/修改表字段表锁很久

3.离线改表,让业务说明维护时间:

a)方案,在范围时间内直接简单sql,时间要提前预演
b)方案,创建临时表,自写sql,迁表进新表完成后,rename 表名

4.在线改表,

a)使用工具pt,gh-ost
b)创建临时表,自写sql,迁表进新表完成后,rename 表名,迁完第一批后需要再次迁移这段时间内的增量数据。

netcore的Dockerfile

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base    
WORKDIR /app
EXPOSE 80                                   #显示暴露的端口,只是显示说明

WORKDIR /app                                #进入现在所在的容器工作目录
COPY  zyhand.webapi .                       #使用当前宿主的相对路径复制
ENTRYPOINT ["dotnet", "ZYHand.WebAPI.dll"]  #如果没有指定,默认监听端口是80