目录 OAuth 2.0 OpenID Connect QuickStart OAuth 2.0 概念 过程 通信 组件 示例代码 概念 OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是充当)资源拥有者去访问资源拥有者的资源(如何让一个系统组件获取另一个系统组件的访问权限) 受保护的资源:是资源拥有者有权限访问的组件 资源拥有者:有权访问 API,并能将 API 访问权限委托出去 客户端:凡是使用了受保护资源上的 API,都是客户端 过程 通信 组件 访问令牌 token 权限范围…
目录 引入 组合模式 源码 引入 在上一篇执行 _connectionDelegate 之后,HttpConnectionMiddleware 处理请求 return connection.ProcessRequestsAsync(_application); 在 HttpConnection 中调用 IRequestProcessor 的 ProcessRequestsAsync 方法 await requestProcessor.ProcessRequestsAsync(httpApplic…
目录 模板方法 源码 建造者 模板方法 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤 源码 https://github.com/dotnet/aspnetcore/ 在目录 aspnetcore\src\Mvc\Mvc.Core\src\Infrastructure 下有一个 ControllerActionInvoker,它继承自 ResourceInvoker internal class ControllerActi…
目录 对外展现的功能 内部功能 功能交互与价值通路 系统架构 目标 认识系统的价值通路 认识功能架构,通过把功能结构与形式结构结合来描述系统架构 受益原则 好的架构必须使人受益,要想把架构做好,就要专注于功能的涌现,使得系统把它的主要功能通过跨越系统边界的接口对外展示出来 对外展现的功能 ASP .NET Core 的使用者是程序员,最终的受益是老板 上一讲对 ASP .NET Core 的描述是文字性描述,是一种非结构性描述,不是很准确,因为每个人对文字的理解都不一样 ASP .NET Cor…
目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, Forms, Rationale/Constraints} 元素.形式/模式.基本原理和限制 为什么需要软件架构? 软件架构的终极目标是用最小的人力成本来满足构建和维护系统的需求 一个软件架构的优劣,可以用它满足用户需求的成本来衡量.如果该成本很低,并且在系统的整个生命周期内一直都维持这样的低成本,那…
目录 项目核心内容 实战目标 RGCA 四步架构法 项目核心内容 无代码埋点实现对所有 API Action 访问控制管理 对 EF Core 实体新增.删除.字段级读写控制管理 与 Identity 进行融合集成 实战目标 RGCA 四步架构法的应用 加深对 OPM 和 OPD 的运用 为毕业设计打下基础 RGCA 四步架构法 Requirement:从利益相关者获取需求 Goal:将需求转化为目标(功能意图) Concept:将目标扩展为完整概念 Architecture:将概念扩展为架构…
目录 模块拆分 代码重构 模块拆分 代码重构 AuthenticationController PermissionController IAuthorizationMiddlewareResultHandler ISaveChangesInterceptor AuthenticationController 新增 AuthenticationController 用于登录和注册:登录会颁发 jwt token,包含用户的 claims 和 role 的 claims 登录 [HttpPost]…
目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NET Core 是什么 ASP .NET Core 是干什么的 Host.Server.HostApplication 与 ASP .NET Core 是什么关系 ASP .NET Core 和 .NET Core 是什么关系 ASP .NET Core 是什么 WEB FRAMEWORK(形式) A…
目录 目标 模块拆分 OPM 开发任务 目标 基于上一讲的模块划分做一个任务拆解,根据任务拆解实现功能 模块拆分 模块划分已经完成了边界的划分,边界内外职责清晰 OPM 根据模块拆分画出 OPM(Object Process Methodology) ActionAccess 模块中的 ActionResourceProvider 会为 RegisterActions 提供支持 Core 模块会对资源进行扫描,扫描之后会得到大量 ResourceModel,将它们持久化到 IResourceSt…
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Security.ActionAccess:扫描 action:添加 action authorize filter:添加集成方式 代码实现 对于一个 web 项目,Filter 是在构建构建 builder 的时候添加的 builder.Services.AddControllers(options =>…