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オブジェクトを期待しているため、シリアル化エラーが発生します。回避策として、Emisorクラスに文字列Tokenプロパティを追加しました

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

Emisor全体をPropertyとしてトークンを返して、それを取得してローカルストレージに格納することができました。しかし、私はそれが正しい方法ではないと思う、私はEmisorの一部でなくてもトークンを手に入れることができなければならないと思う

受け入れられた回答

私はこの目的のために拡張メソッドを作った:

    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);

ナゲットでも利用可能



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow