这是我第一次构建网络api。我已经成功设置了模型视图控制器并启用了令牌生成。但是,我对如何通过请求标头传递访问令牌感到困惑。登录并尝试查看其他页面后,标头中没有关于授权的任何内容,因此我收到401错误。在过去的几天里,我看了好几篇博客,论坛和文章,但无法得出结论。我有我的jQuery将标头存储在变量中,但我不确定存储在何处以及如何引用它或在何处放置引用。我已经在global.asax和一些配置文件(也位于控制器类的顶部)中进行了设置。我的下一个想法是为每个控制器创建一个网页,并在其中存储授权,即使我仍然不知道如何动态放置对其他用户有所不同的令牌。我觉得我很想念一些简单的事情。我想我的问题是如何将我的javascript变量存储在每个请求标头中?这是我的JavaScript供参考:
$("#btnLogin").on('click', function () {
//var data = { Email: $("#loginEmail").val().trim(), Password: $("#textPwd").val().trim(), ConfirmPassword: $("#loginPwd").val().trim() };
$.ajax(
{
url: "/TOKEN",
type: "POST",
data: $.param({ grant_type: 'password', username: $("#loginEmail").val(), password: $("#loginPwd").val() }),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
success: function (resp) {
sessionStorage.setItem('userName', resp.userName);
sessionStorage.setItem('accessToken', resp.access_token);
var authHeaders = {};
authHeaders.Authorization = 'Bearer ' + resp.access_token;
$.ajax({
url: "https://localhost:44327/api/values",
type: "GET",
headers: authHeaders,
success: function (response) {
$("#loginEmail").val(),
$("#loginPwd").val(),
$("#msg").text(response)
}
});
},
error: function () {
$("#msg").text("Authentication failed");
}
})
});