获取移动应用的租户 ID(ASP.NET 样板)



我使用 asp.net 样板作为Web项目和移动应用程序的后端。

该应用程序是多租户。

我有一种方法可以验证移动访问代码。

这是它的代码

[AllowAnonymous]
[ProducesResponseType(typeof(UserDataModel), 200)]
[ProducesResponseType(401)]
[HttpPost]
public async Task<IActionResult> ValidateMobileAccessCode(MobileInvitationCodeInput input)
{
var tenant = await _tenantRepository.GetAll().Where(x => x.Id == AbpSession.TenantId).FirstOrDefaultAsync();
var userId = await _userMobileAccessCodeService.ValidateCodeAndGetUserIdAsync(input.CodeValue);
if (userId == null)
{
return Unauthorized();
}
var user = await _userManager.GetUserOrNullAsync(new UserIdentifier(AbpSession.TenantId, userId.Value));
return Ok(new UserDataModel
{
UserId = userId.Value,
CodeValue = input.CodeValue,
Name = user.FullName,
EmailAddress = user.EmailAddress,
CompanyName = tenant == null ? "Host tenant" : tenant.TenancyName
});
}

但是这一行var tenant = await _tenantRepository.GetAll().Where(x => x.Id == AbpSession.TenantId).FirstOrDefaultAsync();将返回 null,因为我在移动应用程序中没有会话。

如何获取移动应用的租户 ID?

我试图通过文档找到解决方案,但没有运气

您可以通过标头 Abp.TenantId 设置 TenantId。还可以解析租户抛出自定义租户解析程序机制。您需要实现中间件,该中间件将在处理您的请求之前运行,并将其添加到配置中。

Configuration.MultiTenancy.Resolvers.Add<DefaultTenantResolveContributor>();

您应该从接口继承:

ITenantResolveContributor

相关内容

  • 没有找到相关文章

最新更新