【问题标题】:How can I use token to call authorized API method?如何使用令牌调用授权的 API 方法?
【发布时间】:2021-02-20 15:49:49
【问题描述】:

我已经从客户端创建了一个登录组件,我只想从服务器中提取或使用响应令牌来查看来自授权控制器的数据。这是我的登录过程。

private async Task LoginUser()
    { 
            var xx = await client.PostAsJsonAsync("api/login/loginuser", loginmodel);
    }

【问题讨论】:

  • 请给我们更多信息。我您发布的登录名和密码通常不需要令牌。您应该在成功检查登录名和密码后将其取回。
  • 是的,我已经成功实现了登录页面,我要做的是提取令牌并用于访问授权控制器。就像在 Postman 中一样,响应令牌将被复制并粘贴到框中。但我不知道如何在 blazor 中执行此操作。
  • var xx 是你的令牌吗?如何从 API 获取令牌?
  • var xx 将保存我的登录 API 的响应。
  • 我明白了。 var xx 将保持什么值?

标签: c# asp.net-web-api blazor-webassembly


【解决方案1】:

我猜你必须把你的代码改成这个

var httpClient = new HttpClient();
var response = await httpClient.PostAsJsonAsync(posturi, loginModel);
string token= await response.Content.ReadAsAsync<string>();

要访问需要令牌授权的 Api 服务,请使用此代码(您也可以查看此链接 https://docs.microsoft.com/en-us/aspnet/core/blazor/security/server/additional-scenarios?view=aspnetcore-3.1

         var httpClient =new HttpClient(); //or you can use your http client 
                                   //if you use HttpClient Factory.
         var request = new HttpRequestMessage(HttpMethod.... , 
            ...YourApiUrl);
        request.Headers.Add("Authorization", $"Bearer {token}");
        var response = await httpClient.SendAsync(request);
        .......
         .....

【讨论】:

  • 我猜在获取我的令牌时出错。您知道如何真正获得令牌吗?我在 Postman 中尝试了我的登录 API,它完美地响应了令牌,但在 blazor 中我看不到它。
  • 能否在您的问题中包含完整的任务 LoginUser() 代码?
猜你喜欢
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2022-11-17
  • 1970-01-01
  • 2018-07-18
  • 2021-10-24
  • 1970-01-01
相关资源
最近更新 更多