【问题标题】:Role name Admin is already taken when create a new tenant in ABP Angular在 ABP Angular 中创建新租户时已使用角色名称 Admin
【发布时间】:2018-05-28 15:31:17
【问题描述】:

我使用了2018/05/23下载的Angular 2 + Asp.net Core模板。

我做了什么:

  1. 将数据库从 SqlServer 更改为 MySql
  2. 更新了用于将初始化管理员名称更新为“HostAdmin”和“TenantAdmin”的种子
  3. 在管理员中创建租户
  4. 出现错误“角色名称 TenantAdmin 已被占用”。

我调查了创建租户的代码,在创建租户的过程中CreateStaticRoles发生了错误。

在这个方法中,它会创建一个新的角色,但是这里有重复检查。我不确定为什么?以及从哪里获取 RoleManagementConfig.StaticRoles 的数据?除了 UT,我在 StaticRoles 的 ABP 源代码中找不到任何赋值参考。

已编辑: 添加了Abp的重复校验逻辑,看起来总是无法通过校验,因为静态角色名/显示名已经被默认租户使用了。

【问题讨论】:

  • 静态角色添加到AppRoleConfig.cs
  • 感谢@aaron,还有一个问题,既然租户静态角色已经被占用,为什么 Abp 在创建新租户时再次创建静态角色。
  • 每个租户都有自己的角色,包括静态角色。
  • 看起来总是无法通过角色名称重复检查,因为默认租户已经使用了静态角色名称/显示名称。我错过了什么吗?
  • 有一个租户过滤器。

标签: aspnetboilerplate


【解决方案1】:

如果您在下载启动模板时选择“包含登录、注册、用户、角色和租户管理页面”,您的项目中会包含一些迁移文件。这些文件是为 SQL Server 生成的。删除 .EntityFramework 项目中 Migrations 文件夹下的所有迁移文件。迁移文件以时间戳开头。迁移文件名应如下所示

"201506210746108_AbpZero_Initial" 删除所有迁移文件后,选择你的.Web项目作为启动项目,打开Visual Studio的Package Manager Console,在Package Manager Console中选择.EntityFramework项目作为默认项目。然后运行以下命令为 MySql 添加迁移。

Add-Migration "AbpZero_Initial"

现在您可以使用以下命令创建数据库

Update-Database

您现在可以使用 MySql 运行您的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 2021-03-20
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2016-12-08
    • 2023-03-04
    • 2017-06-07
    相关资源
    最近更新 更多