Идентификация.IsAuthenticated возвращает false в ASP.Net Веб — API

#javascript #c# #jquery #.net #asp.net-web-api

#javascript #c# #jquery #.net #asp.net-web-api

Вопрос:

После успешного входа в систему возвращаемое значение всегда false равно . Я использую систему аутентификации по умолчанию, которая предоставляется Microsoft.Identity (опция «Индивидуальные учетные записи пользователей») без каких-либо изменений. Есть мысли?

         [HttpGet]
        [Route("get-userId")]
        public bool CurrentUserId()
        {
            return User.Identity.IsAuthenticated;
        }
 

Коды на стороне клиента:

Login.html:

         $(document).ready(function () {

            $('#btnLogin').click(function () {
                $.ajax({

                    url: '/token',
                    method: 'POST',
                    contentType: 'application/json',
                    data: {
                        username: $('#txtUsername').val(),
                        password: $('#txtPassword').val(),
                        grant_type: 'password'
                    },
                    success: function (response) {
                        sessionStorage.setItem("accessToken", response.access_token);
                        window.location.href = "Momo.html";
                    },

                    error: function (jqXHR) {
                        $('#divErrorText').text(jqXHR.responseText);
                        $('#divError').show('fade');
                    }
                });
            });
        });
 

Momo.html:

     $(document).ready(function () {
                if (sessionStorage.getItem('accessToken') == null) {
                    window.location.href = "Login.html";
                }

                $.ajax({
                    url: '/api/Account/get-userId',
                    method: 'GET',
                    success: function (response) {
                        console.log(response);
                    }
                });
 

console.log(response) ВОЗВРАТ false .

Ответ №1:

Вам нужно отправлять токен на сервер с каждым запросом. Добавьте следующее к вашему вызову Ajax:

 headers: { "Authorization": 'Bearer '   token }
 

Вы можете переписать свой код следующим образом:

       $(document).ready(function () {
            var token = sessionStorage.getItem('accessToken');
            if (token == null) {
                window.location.href = "Login.html";
            }

            $.ajax({
                url: '/api/Account/get-userId',
                method: 'GET',
                headers: { "Authorization": 'Bearer '   token },
                success: function (response) {
                    console.log(response);
                }
            });