2016-05-18 4 views
0

У меня есть приложение ASP.Net MVC5, и оно работает в течение нескольких месяцев. Однако сегодня я нашел некоторые странные вещи.Request.IsAuthenticated является ложным при получении запроса ajax в asp.net mvc

Если я вошел в это приложение и отложил одну страницу на час без какой-либо операции, а затем отправлю запрос ajax с использованием JQuery на сервер, на стороне сервера System.Web.HttpContext.Current.Request.IsAuthenticated - false.

Однако, если я отправлю запрос «получить» не запрос ajax (например, просто нажмите F5, чтобы обновить эту страницу), IsAuthenticated - true. У меня есть проверка, что cookie .AspNet.ApplicationCookie отправляется на сервер правильно.

Почему Request.IsAuthenticated false при получении запроса ajax?

+0

Посмотрите на http://stackoverflow.com/questions/5258721/authorize-attribute-and-jquery-ajax-in-asp-net-mvc – Ben

+0

Пожалуйста, покажите код, который вы используете для отправки ajax запрос. Похоже, что файлы cookie не отправляются с помощью запроса ajax, но когда браузер обновляет. –

ответ

0

Вы должны включить заголовок Authorization с токеном-носителем в вызове ajax. Пожалуйста, посмотрите на это reponse в качестве примера и не забудьте строку 'Bearer ' перед токеном. Надеюсь, это поможет.

0

Спасибо всем!

Я обнаружил, что я неправильно понял запрос Get.In Факт, запрос Get также истек. Поскольку у меня есть SSO-сервер, браузер просто перенаправляется на сайт единого входа и перенаправляет обратно. Это причина, по которой я думал, что требование Get не истекло. Я установил ExpireTimeSpan = TimeSpan.FromHourss (8) в app.UseCookieAuthentication, а затем эта проблема была исправлена.

Смежные вопросы