使用 Razor 时如何在每个请求处传输 JWT 令牌(.NET CORE 2.2 MVC)

Posted

技术标签:

【中文标题】使用 Razor 时如何在每个请求处传输 JWT 令牌(.NET CORE 2.2 MVC)【英文标题】:How to transfer a JWT token at each requesto when using Razor (.NET CORE 2.2 MVC) 【发布时间】:2019-08-08 05:51:16 【问题描述】:

我想对 .net core MVC 项目使用 JWT 授权。我找到了许多关于如何在用户登录时返回 JWT 令牌的示例。 但是,只有少数几个示例说明如何在每个请求的标头中传输令牌。

我找到了 AJAX 示例:

$.ajaxSetup( 标头:“授权”:“承载”+ accessToken);

Simple Authentication using Jwt in dot net core MVC

How to use JWT in MVC application for authentication and authorization?

这是传输 JWT 令牌的正确方法吗? 我总是必须使用 AJAX 吗?

【问题讨论】:

【参考方案1】:

没有 JWT 授权之类的东西。

JWT 令牌只是分发签名声明集的一种格式。

传递令牌的正确方式取决于许多因素,例如您在 oauth 流中的位置、传输是否加密、令牌是否包含个人信息,以及您的前端是否是 spa、本地等

【讨论】:

我下载了一个项目:codeproject.com/Articles/1203978/…【参考方案2】:

链接中的代码示例使用 Ajax 访问受保护的资源/api。您还可以在标头中传递不记名令牌以在服务器端进行 api 调用:

HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "APIurl");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", "YourAccessToken");
HttpResponseMessage response = await client.SendAsync(request);


if (response.IsSuccessStatusCode)


    String responseString = await response.Content.ReadAsStringAsync();

    ...

【讨论】:

以上是关于使用 Razor 时如何在每个请求处传输 JWT 令牌(.NET CORE 2.2 MVC)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用JWT进行身份验证与授权

每个请求的 JWT 令牌验证?

使用过期令牌发出同时 API 请求时如何避免多个令牌刷新请求

如何在 CodeIgniter 3.x 中为来自客户端的每个请求验证 JWT 令牌

ASP.NET MVC5 每个 Razor 页面在第一次加载时非常慢

使用 Rails 和 React 时如何在标头中获取 JWT 令牌