首页 > 其他分享 >ABP-VNext 用户权限管理系统实战06---多租户集成

ABP-VNext 用户权限管理系统实战06---多租户集成

时间:2024-11-22 13:55:50浏览次数:1  
标签:VNext 06 Configure 租户 --- Add new options TenantResolvers

一、集成

1、引用安装包

Volo.Abp.AspNetCore.MultiTenancy

2、配置租户key

Configure<AbpAspNetCoreMultiTenancyOptions>(options =>
{
    options.TenantKey = "BridgeTenantKey";
    
});

3、在代码中写入所有租户,当在也可以在配置文件或数据库中定义你的所有租户

 Configure<AbpDefaultTenantStoreOptions>(options =>
 {

     options.Tenants = new[]
     {
         new TenantConfiguration(
             Guid.Parse("446a5211-3d72-4339-9adc-845151f8ada0"), //Id
             "tenant1" //Name
         ),
         new TenantConfiguration(
             Guid.Parse("25388015-ef1c-4355-9c18-f6b6ddbaf89d"), //Id
             "tenant2" //Name
         )
        
     };
 });

4、开启租户

Configure<AbpMultiTenancyOptions>(options =>
{
    options.IsEnabled = true;
});

5、配置租户中间件

app.UseMultiTenancy();

6、最后访问服务会报错:

<body>
    <h3>找不到租户!</h3>
    无法找到ID或名称为446a5211-3d72-4339-9adc-845151f8ada0的租户<br>
</body>

 

二、租户源原码解析

1、那就从中间件UseMultiTenancy()开始切入

 在该方法中注入了一个中间件:MultiTenancyMiddleware,在该方法中有一个方法InvokeAsync

 进入_tenantConfigurationProvider的实现TenantConfigurationProvider中,查看GetAsync()方法

 在该方法中只做了两件事

一是从请求头中解析租户信息:TenantResolver.ResolveTenantIdOrNameAsync();

解析租户信息是从我们注入的几个类中依次解析直到拿表租户信息,有从请求头,有从cookie中

public class AbpAspNetCoreMultiTenancyModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        Configure<AbpTenantResolveOptions>(options =>
        {
            options.TenantResolvers.Add(new QueryStringTenantResolveContributor());
            options.TenantResolvers.Add(new RouteTenantResolveContributor());
            options.TenantResolvers.Add(new HeaderTenantResolveContributor());
            options.TenantResolvers.Add(new CookieTenantResolveContributor());
        });
    }
}

 

二是将解析出的租户信息与系统中配置的租户信息匹配:await FindTenantAsync(resolveResult.TenantIdOrName);

protected virtual async Task<TenantConfiguration?> FindTenantAsync(string tenantIdOrName)
{
    if (Guid.TryParse(tenantIdOrName, out var parsedTenantId))
    {
        return await TenantStore.FindAsync(parsedTenantId);
    }
    else
    {
        return await TenantStore.FindAsync(tenantIdOrName);
    }
}

其中,TenantStore就来源我们系统开始配置的AbpDefaultTenantStoreOptions类

 

标签:VNext,06,Configure,租户,---,Add,new,options,TenantResolvers
From: https://www.cnblogs.com/zhengwei-cq/p/18562733

相关文章

  • Linux基础-目录操作与文件操作
    学习Linux基础,掌握Linux中比较基础的目录操作与文件操作。目录操作pwd:查看当前目录路径(绝对路径)pwdls:显示指定路径(默认当前的路径)下的文件或者目录ls[选项]-a:显示所有(包含隐藏文件)-l:显示所有文件或目录的详细信息列表-r:将文件以相反的次序显示(原定依照英文字母的次......
  • Linux基础-用户/用户组操作
    用户操作普通用户:安装系统时创建的用户,也可以由管理员来分配。最高管理员:root,Linux系统内置,当第一次使用root用户的时候,需要修改密码。修改最高管理员root用户的密码:sudopasswd关于用户、文件及权限的关系:用户对文件拥有的权限(读、写、执行、无权限)普通用户和最高管......
  • 毕业论文设计 Python 实现基于SSA-CNN-LSTM麻雀算法优化卷积长短期记忆神经网络进行时
    目录Python实现基爱她TTA-CNN-LTTM麻雀算法优化卷积长短期记忆神经网络进行时间序列预测模型爱她详细项目实例    4项目背景介绍...4项目目标...5提升预测精度...5实现自动化优化...5提升模型爱她泛化能力...5提高计算效率...5项目意义...5创新算法应用.......
  • 毕业论文设计 Python 实现基于PSO-LSTM粒子群优化长短期记忆神经网络进行时间序列预测
    目录Python实现基于PTO-LTTM粒子群优化长短期记忆神经网络进行时间序列预测模型丁当详细项目实例    5项目背景介绍...5项目目标...51.     模型架构丁当设计愛她实现...62.     数据集丁当选择愛她预处理...63.     训练愛她调优过程...6......
  • AO3416-ASEMI中低压N沟道MOS管AO3416
    编辑:llAO3416-ASEMI中低压N沟道MOS管AO3416型号:AO3416品牌:ASEMI封装:SOT-23批号:最新最大漏源电流:6.5A漏源击穿电压:20VRDS(ON)Max:30mΩ引脚数量:3芯片个数:沟道类型:N沟道MOS管、低压MOS管漏电流:ua特性:N沟道MOS管、场效应管工作温度:-55℃~150℃备受欢迎的AO3416MOS管 ......
  • wordpress二开-WordPress新增页面模板-说说微语
    微语说说相当于一个简单的记事本,使用还是比较方便的。这个版本的说说微语CSS样式不兼容,可能有些主题无法适配,但是后台添加内容,前端显示的逻辑已经实现。可以当作Wordpress二开中自定义页面模板学习~一、后台添加说说微语模块首先我们把以下代码,添加到主题根目录中的funct......
  • 电源模块的使用方法 IN和OUT说明 SMP15-35W系列
    电源模块的使用方法IN和OUT说明SMP15-35W系列电源是整个电路可靠工作的核心部分。由于电源电路电流及发热量大,容易出现故障。今天为大家介绍电源的使用方法,BOSHDIA电源模块将电源电路全部集成到一个很小的PCB上,从而实现输出稳定电压及大电流的模块。电源模块可直接贴装在印刷......
  • CryoSTAR: Leveraging Structural Prior and Constraints for Cryo-EM Heterogeneous
    Doc2X:智能文档解析工具Doc2X支持从PDF转换为Docx、HTML、Markdown,功能覆盖公式识别、代码解析、表格转换、多栏布局解析,并整合了GPT翻译和Deepseek翻译!Doc2X:IntelligentDocumentParsingToolDoc2XsupportsPDFtoDocx,HTML,andMarkdown,withfeatures......
  • TOKENFORMER: RETHINKING TRANSFORMER SCAL- ING WITH TOKENIZED MODEL PARAMETERS 翻
    批量处理PDF文档,就选Doc2X支持大规模PDF转Word、Markdown、HTML,集成表格与多栏解析,提升工作效率。BatchProcessPDFswithDoc2XHandlelarge-scalePDFtoWord,Markdown,orHTMLconversionswithintegratedtableandmulti-columnparsingforbettereffi......
  • nuitka可能的问题-matplotlib
    nomodule的问题当然这里你会发现真正运行exe的时候,会报错:nomodulenamedtorch,cv2,tensorflow等等这些没有转成C++的第三方包。这里需要找到这些包(我的是在software\python3.7\Lib\site-packages下)复制(比如numpy,cv2这个文件夹)到demo.dist路径下。上面的内容很关键,估......