asp.net zero 8.2 学习-9-多租户设置,发送邮件配置

2023-11-14

学习在asp.net zero系统中如何切换多租户及没有租户的设置:

  • 配置多租户,为实体添加TenantID
  • 数据库迁移
  • 修改DemoObjectAppService服务类的实体创建方法
  • 配置邮件发送
  • 创建租户,并添加数据测试
  • 切换为无租户系统

配置多租户,为实体添加TenantID

asp.net zero系统默认采用多租户设置,并且默认有一个default的租户名称。这里需要对实体类(领域模型),添加TenantID,实现IMayHaveTenant接口

[Table("DemoObjects")]
public class DemoObject : FullAuditedEntity,IMayHaveTenant
{
    /// <summary>
    /// 租户ID
    /// </summary>
    public int? TenantId { get; set; }
    ...
}

在SISDbContext下为DemoObject添加租户ID为索引

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    //配置租户ID
    modelBuilder.Entity<DemoObject>(b =>
    {
        b.HasIndex(e => new { e.TenantId });
    });

添加数据库迁移

  1. 清空DemoObjects表,执行sql:
delete from DemoObjects;truncate table DemoObjects;
  1. 先添加数据库迁移:add-migration addTenantId2DemoObject
  2. 再升级数据库:update-database

修改DemoObjectAppService服务类的实体创建方法,添加租户ID

/// <summary>
/// 创建实体
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[AbpAuthorize(AppPermissions.Pages_Demo_Create)]
private async Task Create(CreateOrEditDemoObjectDto input)
{
    var demoObject = ObjectMapper.Map<DemoObject>(input);
    //如果租户ID不为空,则添加租户ID
    if (AbpSession.TenantId!=null)
    {
        demoObject.TenantId = (int)AbpSession.TenantId;
    }
    await  _demoObjectRepository.InsertAsync(demoObject);
}

配置邮件发送

运行asp.net zero系统,在系统的设置->邮箱设置发送邮箱参数:这里以qq邮箱作为发送邮箱,需要登录qq邮箱开启POP3/SMTP服务:

开启POP3/SMTP服务

在asp.net zero设置发送邮箱:

发送邮箱设为qq邮箱,端口为587,SMTP服务器:smtp.qq.com,用户名自己设置,密码这里不是qq邮箱登录密码而实开启pop3服务的授权码 ,保存设置

asp.net zero系统默认在调试模式下不发送邮件,需要到SIS.Core项目下的SISCoreModule.cs设置:注释掉下面代码,运行系统就可以在"系统->设置->邮箱"测试发送邮件功能

//默认Debug模式下不能发送邮件
//if (DebugHelper.IsDebug)
//{
//    //Disabling email sending in debug mode
//    Configuration.ReplaceService<IEmailSender, NullEmailSender>(DependencyLifeStyle.Transient);
//}

测试邮件:

创建租户,并添加数据测试

先不设置租户,以admin登录系统,添加租户tenant1,并设置邮箱,这是系统会发送激活邮件。先注销系统,登录邮箱,点击验证会获取到租户的用户名和密码。
在租户tenant1下登录系统,创建u1_t1的测试实体DemoObject,再在default租户下登录系统,创建u1_default的测试实体,再租户为空时,登录系统,添加u1_null的测试实体。
这是会发现在三个子系统下,用户的数据实现了隔离,互不影响,也看不到其他租户的数据。这就是多租户。

切换到无租户的系统

在SIS.Core.Shared下的SISConsts下设置public const bool MultiTenancyEnabled = false;,可以将系统设置为无租户系统。
这是登录时无租户选择,以admin登录,这时测试实体显示的时u1_default。说明系统在无租户的情况下是以系统默认创建的default租户系统运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net zero 8.2 学习-9-多租户设置,发送邮件配置 的相关文章

随机推荐

  • CTP程序化交易入门系列之四:行情订阅常见问题解答

    前言 这一章总结了大家订阅行情最常问的一些问题的相关解答 希望能有帮助 如有不对的地方 欢迎指正 后期会在这里更新迭代 欢迎到这底下提问 更新时间 20201112 1 获取行情的地址在哪里可以查到 simnow发的即是实时行情 官网上可以
  • kettle用Rest Client发送http请求

    kettle用Rest Client发送http请求 kettle用add join xml组装复杂的xml报文 kettle配置及性能调优 需求 请求一个服务接口 请求体是一段 json 服务接口响应数据 数据也是 json 形式 这里用
  • 蓝桥杯单片机零基础到国二经验分享

    我参加的是第十三届蓝桥杯大赛 从最开始的零基础 毫无头绪 到拿下国二 颇有体会 在这里将我的备赛经验分享给大家 希望可以帮到一些正在备赛的蓝桥杯er 目录 一 蓝桥杯 单片机组介绍 二 零基础到国二历程 客观题 程序题 1 从零基础到省三
  • 前端DOM操作精解:基础概念、方法与最佳实践

    引言 本文将深入探讨前端开发中的DOM操作 包括基础概念 常用方法和最佳实践 通过清晰易懂的解释和实际案例分析 我们将一起了解如何最有效地使用DOM操作来提升前端应用的用户体验 一 DOM操作入门 在深入探讨DOM操作之前 我们先要理解什么
  • SpringBoot的默认日志框架

    logback日志的集成 总结 1 SpringBoot底层也是使用slf4j logback的方式进行日志记录 a logback桥接 logback classic 2 SpringBoot也把其他的日志都替换成了slf4j a log
  • flutter iOS和安卓的version,build区别

    iOS的version是关键的 build次数不重要 version要大于上一个 build叠加就好 version加1后 build可以从头开始 开发者后台提审的版本号要跟提交的版本号要一致 安卓的就不是了 最重要的是build次数 每次
  • 【算法】解密回文——栈

    上一节中我们学习了队列 它是一种先进先出的数据结构 还有一种是后进先出的数据结构它叫做栈 栈限定只能在一端进行插入和删除操作 比如说有一个小桶 小桶的直径只能放一个小球 我们现在向小桶内依次放入2号 1号 3号小球 假如你现在需要拿出2号小
  • URI、URL和URN的定义和关系

    1 URI URI Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串 所标识的资源可能是服务器上的一个文件 不过 也可能是一个邮件地址 新闻消息 图书 人名 Intern
  • PostgreSQL服务启动时报错:“FATAL: could not create lock file "/tmp/.s.PGSQL.5432.lock": Permission denied”

    PostgreSQL服务启动时报错 FATAL could not create lock file tmp s PGSQL 5432 lock 权限不够 PostgreSQL服务启动时报错 FATAL could not open loc
  • Linux一分钟部署dist

    1 首先保证服务器要有tomcat安装包 如果没有的话 访问http tomcat apache org 选择版本号下载 格式要tar gz的就可以 2 上传安装包并解压 3 运行 解压之后cd切到tomcat目录下面的bin目录 star
  • 关于vue多个项目的管理

    环境 vueCli webpack 应用场景 一套代码需要支持10几家客户 每家的皮肤 功能都有一些小的差异 主体流程大致是一样的 思路 在一个vue的服务中管理多个项目 各项目的功能模块相对独立 但公共部分可以提取为公共组件 并在多个项目
  • kafka相关

    1 为什么使用kafka 以实际业务中用户提现为例 比如一笔交易发生 这笔交易是否是欺诈交易 这笔交易是否已经达到限额了 相关用户是否在黑名单中 交易结果联动短信 Email等渠道通知用户 等等 也许一笔简单的交易 就要与反欺诈系统 黑名单
  • 华为交换机配置SSH远程登陆

    拓扑图 1 配置IP
  • 互联网摸鱼日报(2023-03-03)

    互联网摸鱼日报 2023 03 03 InfoQ 热门话题 在 Istio 中使用 Kata 容器注入工作负载 数字中国顶层设计来了 一图读懂 2522 框架 政策解读 探索 Android 14 首个开发者预览版的新功能与特性 深入银行数
  • T0、T1、TS、D1是什么鬼?一文看懂POS机刷卡到账模式区别和利弊

    经常被一些刚刚接触POS机的朋友问到一个 什么是T0 什么是T1 今天小敏子就和大家来探讨一下几种刷卡到账模式区别和利弊 一 先说一下定义 什么是T T为英文Trade交易的首字母 什么是D D为英文Day 天 的首字母 什么是S S为英文
  • Vue让router-view默认显示任意页面

    场景 一个home页面 点击左边的菜单栏 右边显示页面 因此都知道在右边放一个router view然后配置路由即可 然而问题出现在 重新打开的时候 默认是白色空的 那么解决办法是 在router管理的index js中 加上 redire
  • PHP源码1001PHP源码,某区块链养殖系统平台PHP源码无加密完整版,带充值接口+完整会员系统 可封装APP可二开...

    站长评测 对接的应该是码支付 源码没啥问题 有些功能还没开发完 适合二开 需要的朋友看看 1 只需用330元注册狗狗集市的一个游戏账户 就可以加入我们的大家庭了并可以获得戏猪的称号 第二天才会有收益 2 空闲之余呢您还可以去好友猪子圈里偷猪
  • 线性布局和相对布局的一些属性

    线性布局 LinearLayout orientation 属性是指定线性布局的排列方向 horizontal 水平 vertical 垂直 gravity属性是指定当前控件内容显示位置 left 左边 right 右边 top 上边 bo
  • SoundTouch实现音频变速变调

    音频基础 声音属性 响度 Loudness 音量 与声波的振幅有关 音调 Pitch 音调与声音的频率有关 声音频率越大时 音调就越高 否则就越低 音色 Quality 由物体结构特性所决定 A D转换 Analog to Digital
  • asp.net zero 8.2 学习-9-多租户设置,发送邮件配置

    学习在asp net zero系统中如何切换多租户及没有租户的设置 配置多租户 为实体添加TenantID 数据库迁移 修改DemoObjectAppService服务类的实体创建方法 配置邮件发送 创建租户 并添加数据测试 切换为无租户系