Blazor在登录或注册时获取jwt令牌

blazor

我必须得到一个来自asp.net webapi的令牌的响应,就像这样

return new JwtSecurityTokenHandler().WriteToken(token);

并从Blazor登录页面

return new JwtSecurityTokenHandler().WriteToken(token);

我得到一个序列化错误,因为响应是期望一个Emisor对象而不是我真正想要获得的令牌。作为一种解决方法,我向Emisor类添加了一个字符串Token属性

return new JwtSecurityTokenHandler().WriteToken(token);

并使用令牌作为Property返回整个Emisor,这样我就可以获取它并将其存储在本地存储中。但我认为这不是正确的方法,我认为我必须能够获得令牌而不必成为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();

    }

然后像这样使用它:

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

    }

也可以在nuget使用




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因