如何在ASP.NET Core中的页面导航中包含JWT标记

时间:2017-09-16 13:40:35

标签: asp.net-core jwt

我在ASP.NET Core中尝试使用JWT,但我对如何在页面导航中使用它感到困惑。我有几个标有Authorize属性的控制器,我需要在请求的标题中包含JWT才能访问它们。

我已经在生成令牌,我只是不知道在导航到标有授权的页面时如何在请求标头中包含令牌。

我的问题是:

  1. 如何将令牌添加到请求中,以便我可以在导航时使用授权访问这些页面?

  2. JWT令牌通常以这种方式使用(页面导航),还是主要用于API调用?这样使用它是不对的?

  3. 我需要能够存储JWT,以便我可以在请求标头中添加它们,我想存储在cookie中。这不能解决基于cookie的身份验证与CSRF有关的问题吗?

1 个答案:

答案 0 :(得分:0)

JWT Tokes用于webservice / Rest API调用。

对于MVC页面,您使用Cookie,通常通过ASP.NET Core Identity完成。

您也可以使用来自控制器的JWT,即如果您呼叫远程api。在这种情况下,您可以通过HttpClientSetBearerToken来构建您的请求,就像这样

public async Task<IActionResult> RemoteCall()
{
    string accessToken = ...;

    using (var client = new HttpClient())
    {
        client.SetBearerToken(accessToken);
        string content = await client.GetStringAsync("https://example.com/api/resource");

        return Content(content);
    }
}