Blazor получает токен jwt при входе или регистрации

blazor

Вопрос

Я должен получить ответ от токена, входящего в asp.net webapi, который подобен этому

return new JwtSecurityTokenHandler().WriteToken(token);

и с страницы входа в Blazor

    private async Task LoginEmisor()
{
    var response = await http.PostJsonAsync<Emisor>("api/Emisors/Login",emisor);
    Storage["token"] = response.Token;
    Console.WriteLine(response.Token);
}

И я получаю ошибку сериализации, потому что ответ ожидает объект Emisor, а не токен, который я действительно хочу получить. В качестве обходного пути я добавил свойство Token для класса Emisor

            emisor.Token = token.ToString();
            return emisor;

и вернуть весь Emisor с токеном как Property, и таким образом я смог его получить и сохранить в локальном хранилище. Но я думаю, что это неправильный способ сделать это, я думаю, что должен иметь возможность получить токен, не будучи частью Emisor

Принятый ответ

Для этой цели я использовал метод extenstion:

    public static async Task<string> SendJsonAsyncRawResult(this HttpClient httpClient, HttpMethod httpMethod, string requestUri, object content)
    {
        var requestJson = JsonUtil.Serialize(content);
        var response = await httpClient.SendAsync(new HttpRequestMessage(httpMethod, requestUri)
        {
            Content = new StringContent(requestJson, Encoding.UTF8, "application/json")
        });

        return await response.Content.ReadAsStringAsync();

    }

и затем используйте его следующим образом:

        var obj = new { username, password };
        var token = await _http.SendJsonAsyncRawResult(HttpMethod.Post, "api/token", obj);

Также доступно на nuget




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему