【问题标题】:Token based authentication in a asp.net core mvc web application using web api使用 web api 在 asp.net core mvc web 应用程序中基于令牌的身份验证
【发布时间】:2019-10-19 22:19:15
【问题描述】:

我有一个 .net core 2.2 web 应用程序,其中数据库调用是通过 web api 处理的。我正在尝试使用 web api 对我的应用程序进行身份验证。我在我的 web api 上生成了一个 JWT 令牌。但我无法在我的 Web 应用程序中检索该令牌。

如何在我的 web 应用程序中使用 web api 发出的令牌来访问更多模块?

提前致谢!

我的网络应用程序中的代码:

Task<OkObjectResult> ValidUser = commonHelper.CheckValidUserToken(identity);

从 web api 返回令牌的代码:

OkObjectResult tokenObject = Ok(
    new
    {
        token = new JwtSecurityTokenHandler().WriteToken(token),
        expiration = token.ValidTo
    });
return tokenObject;

我需要获取用于访问 web api 中的控制器的令牌。现在我得到一个任务。

【问题讨论】:

  • 您能否详细说明一下,Web 应用程序没有收到令牌?还是您无法使用令牌进行身份验证
  • 实际上我设法在我的 Web 应用程序中获取了令牌。由于我对这项技术完全陌生,我不确定如何使用令牌进行身份验证。任何线索/帮助将不胜感激。

标签: asp.net-core-mvc asp.net-core-2.2


【解决方案1】:

一般来说,您的客户端将使用您的凭据向 web api 端发送 HTTP 请求,web api 将验证凭据,创建令牌并发送回您的客户端。

您没有提供客户代码。根据你的web api返回OkObjectResult,你可以先创建对象类:

public class Value
{
    public string token { get; set; }
    public string expiration { get; set; }
}

public class RootObject
{
    public Value value { get; set; }

    public int statusCode { get; set; }
}

并反序列化从响应中读取到对象的 json 字符串,获取令牌值,如:

// call api
var apiClient = new HttpClient();

var response = await apiClient.GetAsync("https://localhost:44348/api/values");
if (!response.IsSuccessStatusCode)
{
    Console.WriteLine(response.StatusCode);
}
else
{
    var content = await response.Content.ReadAsStringAsync();
    RootObject rootObject = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(content);

    var token = rootObject.value.token;

} 

我们不知道CheckValidUserToken函数是什么,但你应该检查客户端应用如何发送令牌请求并读取响应。

【讨论】:

  • 根据您的建议,我为令牌创建了一个类,我可以将值传递回我的网络应用程序。
  • @Reshma,你有什么问题?如果您不知道如何使用令牌来访问 Web api 方法,只需将令牌附加为 http 客户端请求授权标头: var apiClient = new HttpClient(); apiClient.SetBearerToken(tokenResponse.AccessToken);
  • 现在它按预期工作了。感谢您为我提供解决方案。
猜你喜欢
  • 2017-07-01
  • 2016-06-09
  • 2019-11-06
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多