Abp 源码分析:十二、多租户体系与权限验证

0.简介 承接上篇文章我们会在这篇文章详细解说一下 Abp 是如何结合 IPermissionChecker 与 IFeatureChecker 来实现一个完整的多租户系统的权限校验的。 1.多租户的概念 多租户系统又被称之为 Saas ,比如阿里云就是一个典型的多租户系统,用户本身就是一个租户,可以在上面购买自己的 ECS 实例,并且自己的数据与其他使用者(租户)所隔绝,两者的数据都是不可见的。 那么 Abp 是如何实现数据隔离的呢? 1. ...

Abp 源码分析:十一、权限验证

0.简介 Abp 本身集成了一套权限验证体系,通过 ASP.NET Core 的过滤器与 Castle 的拦截器进行拦截请求,并进行权限验证。在 Abp 框架内部,权限分为两块,一个是功能(Feature),一个是权限项(Permission),在更多的时候两者仅仅是概念不同而已,大体处理流程还是一样的。 由于 Abp 本身是针对多租户架构进行设计的,功能是相对于租户而言, ...

Abp 源码分析:十、异常处理

0.简介 Abp 框架本身针对内部抛出异常进行了统一拦截,并且针对不同的异常也会采取不同的处理策略。在 Abp 当中主要提供了以下几种异常类型: 异常类型 描述 AbpException Abp 框架定义的基本异常类型,Abp 所有内部定义的异常类型都继承自本类。 AbpInitializationException Abp 框架初始化时出现错误所抛出的异常。 AbpDbConcurrencyException 当 EF Core 执行数据库操作时产生了 DbUpdateConcurrencyException 异常的时候 Abp ...

Abp + Grpc 如何实现用户会话状态传递

0.背景 在实际项目当中,我们采用的是 Abp 框架,但是 Abp 框架官方并没有针对 Grpc 进行模块封装。基于此我结合 Abp 与 MagicOnion 封装了一个 Abp.Grpc 模块,它包括服务端和调用端两部分的包。通过这两个包,你可以很方便地在 Abp 框架当中集成 Grpc 实现服务内部通讯。 ...

ASP .NET CORE 根据环境变量支持多个 appsettings.json

0.背景 在开发项目的过程当中,生产环境与调试环境的配置肯定是不一样的。拿个最简单的例子来说,比如连接字符串这种东西,调试环境肯定是不能连接生产数据库的。在之前的话,这种情况只能说是你 COPY 两个同名的配置文件来进行处理。然后你在本地就使用本地的配置,生产环境就使用生产环境的配置文件,十分麻烦。 而 ASP .NET CORE 支持利用环境变量来动态配置 JSON 文件,下面就来看一下吧。 1.准备工作 首先在你的 ASP ...