2015-09-29 8 views
0

У меня есть требование вызвать действие из представления. У меня есть два способа сделать это:Выполнение запроса ajax в MVC и вызов ADAL

  1. с помощью Ajax
  2. Используя Html.ActionLink

Я хочу использовать Ajax для некоторых конкретных причин. Теперь проблема заключается в том, что действие, которое я вызываю, использует ADAL, и поэтому после авторизации от Azure AD он перенаправляет на возврат указанного URI (используя RedirectResult в MVC). Проверьте код this link на полный код ADAL.

Теперь проблема заключается в том, что весь процесс работает нормально, если я использую параметр 2, то есть HTML.ActionLink, но не работает с ajax. В ajax он никогда не достигает возврата uri (что является функцией CatchCode, если вы проверяете ссылку, упомянутую выше), указанную в лазурном AD, хотя в скрипаче url формируется одинаковым для обоих параметров.

Любая помощь? Надеюсь, у меня есть смысл.

Edit: Ajax код, я использую это

$.ajax({ 
     url: '/Home/About', 
     data: { id: someKey }, 
     cache: false, 
     type: "POST", 
     success: function (data, textStatus, XMLHttpRequest) { 
      //dosomething 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      //dosomething 
      console.log(errorThrown); 
     }, 
     complete: function() { 
      //dosomething 
     } 
    }); 
+0

Мой друг, я думаю, нам нужен код, чтобы помочь вам :) – Luke

+0

Код C# для ADAL такой же, как и в ссылке. Я отредактировал вопрос для ajax. Это довольно прямолинейно. – Garima

ответ

0

@Garima, Это не OneNote конкретный вопрос, и я не являюсь экспертом в АСР аутентификацией, но я буду стараться изо всех сил, чтобы ответить. Используете ли вы код «response_type» при вызове OAuth? Если это так, вы внедрили поток предоставления кода авторизации OAuth, который отлично работает со стороны сервера. Если вы хотите сделать OAuth от клиента (aka Ajax), вам нужно будет реализовать поток предоставления учетных данных клиента OAuth. Вы можете прочитать о 2 потоков на:

Попробуйте использовать клиентские учетные данные предоставляют поток для AJAX.

+0

Согласитесь, Dipak это не один конкретный вопрос, но я пытаюсь это сделать для вызова одной заметки api и, следовательно, тега. Спасибо за ваш ответ. Я посмотрю ссылки. – Garima