如何将承载令牌传递到请求标头

时间:2020-05-18 20:41:44

标签: c# asp.net asp.net-web-api asp.net-mvc-5 http-headers

这是我第一次构建网络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");
                }
            })

    });

0 个答案:

没有答案