Как назначить TenantId для abpsession в API процесса входа в систему?

Приложение (aspnetboilerplate) — это отдельная служба API. Для входа в систему используется TokenAuthController/Authenticate в качестве почтового запроса, он регистрируется, но не может получить там сведения о арендаторе. Поскольку AbpSession.TenantId не задан. Ниже приведен код. На самом деле я получаю нулевое значение для AbpSession при попытке получить записи для пользователя с логином арендатора. Но без арендатора работает нормально.

   [AbpAllowAnonymous]
    [HttpPost]
    public async Task<AuthenticateResultModel> Authenticate([FromBody] AuthenticateModel model)
    {
        var loginResult = await GetLoginResultAsync(
            model.UserNameOrEmailAddress,
            model.Password,
            GetTenancyNameOrNull()
        );

        var accessToken = CreateAccessToken(CreateJwtClaims(loginResult.Identity));
        await _sessionAppService.GetCurrentLoginInformations();



        return new AuthenticateResultModel
        {
            AccessToken = accessToken,
            EncryptedAccessToken = GetEncrpyedAccessToken(accessToken),
            ExpireInSeconds = (int)_configuration.Expiration.TotalSeconds,
            UserId = loginResult.User.Id
        };
    }

person shamim    schedule 06.07.2019    source источник
comment
Вы отправили Abp.TenantId в заголовке запроса? См. aspnetboilerplate.com/Pages/Documents/.   -  person ryan.c    schedule 09.07.2019
comment
вам нужно отправить заголовок Abp.TenantId   -  person Alper Ebicoglu    schedule 10.07.2019
comment
aspnetboilerplate.com/Pages/Documents/Abp-Session вот ваш ответ... Вы можете использовать session.Use(tenantId, userId) для сеанса   -  person Renascent    schedule 24.03.2020


Ответы (1)


Я только что столкнулся с теми же проблемами, и вы решаете это, добавляя идентификатор арендатора в заголовок перед вызовом Authenticate.

Вот моя рабочая версия

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("Abp.TenantId", "3234");

Вызовите метод проверки подлинности, гарантирующий, что используется указанный выше httpClient.

Например, новый TokenAuthServiceProxyClient(httpClient).AuthenticateAsync(body: body);

person Ivan Sager    schedule 16.05.2021