所以我试图用ASP.NET Boilerplate创建一个SaaS应用程序,我遇到了一些问题如下:
当我观察框架时,我注意到UserRegistrationManager中的“RegisterAsync”函数基于当前活动的租户创建用户。这意味着如果我当前登录租户'1',那么当我注册新用户时,新用户将具有tenantId'1'。另一方面,当我当前没有登录时,如果我注册一个新用户,该应用程序将显示异常'无法注册主机用户'。
public async Task<User> RegisterAsync(string name, string surname, string emailAddress, string phoneNumber, string userName, string plainPassword, bool isEmailConfirmed)
{
CheckForTenant();
var tenant = await GetActiveTenantAsync();
var user = new User
{
TenantId = tenant.Id,
Name = name,
Surname = surname,
EmailAddress = emailAddress,
PhoneNumber = phoneNumber,
IsActive = true,
UserName = userName,
IsEmailConfirmed = isEmailConfirmed,
Roles = new List<UserRole>()
};
return user;
}
private void CheckForTenant()
{
if (!AbpSession.TenantId.HasValue)
{
throw new InvalidOperationException("Can not register host users!");
}
}
我想要构建的应用程序要求新用户能够注册免费试用然后付费订阅。所以我认为新用户应该能够自己创建租户。因此,如果新用户注册,他们将被迫创建新租户,然后他们可以在应用程序中执行任何其他操作。
问题是User表中的tenantId列不能为null,所以我可以在没有租户的情况下注册。我想首先将所有新创建的用户分配给“默认”租户,但我认为这不是最佳做法。
有没有办法克服这个问题或任何关于它的参考?提前致谢!
我查看了代码和文档,我认为绝不允许未知用户创建新租户。这应该由具有创建租户的正确授权的人员执行。这是主机租户中存在的用户。您作为主机租户的管理员需要为其他人创建租户并将其添加为该租户的管理员。
然后,通过正常方式注册用户,并为该租户运行注册网页。
怎么做,我留给你弄清楚样板本身的文档! Documentation
根据我的经验SaaS应用程序开发经验,多租户应用程序中的典型自我注册流程将如下所示
您想要使用的流程非常简单
您的所有API调用都应该正常工作。
注意
希望这澄清一下