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


    系列目录:
    asp.net zero 8.2 学习-1-安装

    asp.net zero 8.2 学习-2-创建一个页面

    asp.net zero 8.2 学习-3-添加实体,并迁移到数据库

    asp.net zero 8.2 学习-4-创建接口及服务

    asp.net zero 8.2 学习-5-实现增删改查服务及API测试

    asp.net zero 8.2 学习-6-权限控制

    asp.net zero 8.2 学习-7-展示实体列表,实现查询,分页,过滤,排序功能

    asp.net zero 8.2 学习-8-实现在页面添加、编辑、删除、查看实体

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

    asp.net zero 8.2 学习-10-发布到IIS

    asp.net zero 8.2 学习-11-Metronic替换google字体,加速网页加载速度

    学习在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租户系统运行。

  • 相关阅读:
    validate BST
    LC282. Expression Add Operators
    nginx统计日志命令
    iptables和firewalld命令
    nginx安装
    测试服务器IO
    规范主机名和设置最大文件进程数
    Docker安装
    MySQL/MariaDB二进制安装
    Docker原理
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12359586.html
Copyright © 2020-2023  润新知