说明 ==== ## 关于 共享框架 随着 .NET Core 3.0 的发布,许多 ASP.NET Core 程序集不再作为包发布到 NuGet。 相反,程序集包含在 Microsoft.AspNetCore.App 共享框架中,该框架随 .NET Core SDK 和运行时安装程序一起安装。 + Web项目,一般自动包含 AspMicrosoft.AspNetCore.App 共享框架,即 共享框架由项目的Sdk属性(Microsoft.NET.Sdk.Web)自动引入 ```xml net7.0 enable enable ``` + 类库项目等,要手动引入(无法使用nuget包的方式引入) ```xml net7.0 enable enable ``` ```xml netstandard2.0;netcoreapp3.0;netcoreapp3.1;net5.0;net6.0;net7.0 aspnetcore;authentication;security;basicauth Debug;Release;CodeQL ``` ## 认证与授权实质关系 + 认证与授权是两个独立的 `中间件`,通过请求上下文的 User 属性进行 “交互”; + 认证 -> 认证凭据放入 请求上下文(HttpContext)的User属性(实质是一个ClaimsPrincipal对象); + 授权 -> 先从请求上下文的User属性拿到凭据:ClaimsPrincipal, 然后进行权限判定; ## 认证使用方式 + 配合授权一起使用:api控制器或方法上加特性[Authorize],由框架自动调用 + 在Api方法内部调用 HttpContext 扩展方法: `var result = HttpContext.AuthenticateAsync();` 拿到认证结果,手动执行自己的逻辑。