2016-12-27 2 views
0

Я выполнил одно приложение MVC с базовой реализацией в соответствии с thisВызова Аутентифицированного метод действия от Webform

Теперь, когда я называю этот метод действия от моего Webform приложения с помощью AJAX, он не прошу полномочия и бросал 401 ошибку ,

Это моя Аякса функция:

function testSS() 
     { 
      $.ajax({ 

       url: 'http://localhost:52099/Controller/Sample', 
       type: 'GET',     
       success: function (result) { 
        $("#ctl00_cphPageContent_SSlbl12").val(result); 
       }, 
       error: function (xhr) { 
        alert(xhr); 
       } 
      }); 
     } 

Как я могу вызвать метод проверки подлинности из WebForm проекта?

Спасибо!

+0

Когда вы вызываете методы, необходимые для добавления заголовка аутентификации, ваш код, вероятно, пропустит этот заголовок аутентификации – glacasa

+0

от вызова ajax? – Ankita

+0

Код аутентификации, который вы связали, проверяет наличие заголовка проверки подлинности. Если пользователь веб-формы зарегистрирован, вы должны использовать базовую аутентификацию asp.net; используемый вами код предназначен для защиты веб-сервиса при наличии анонимных пользователей. Как это работает, зависит от кода, который вы написали, для вызова веб-службы. Кроме того, обратите внимание, если вы разрешите анонимный доступ к вашему действию mvc, вероятно, это будет небезопасное событие с этой аутентификацией. – glacasa

ответ

1

Для того, чтобы это сделать, вам нужно добавить заголовок Authorization, содержащий логин и пароль, основанные на base64.

Для кодирования базы 64, вы можете использовать btoa()

var authHeader = window.btoa("login:password"); 

Теперь вы можете добавить заголовок (см $.ajax documentation)

$.ajax({ 
    url: 'http://localhost:52099/Controller/Sample', 
    headers: { Authorization: authHeader }, 
    type: 'GET',     
    success: function (result) { 
     $("#ctl00_cphPageContent_SSlbl12").val(result); 
    }, 
    error: function (xhr) { 
     alert(xhr); 
    } 
}); 

Пожалуйста, обратите внимание, что это не будет очень безопасно, так как Логин/пароль известен от клиента и отправляется легко читаемым способом, поэтому очень легко найти злоумышленник.

Если веб-страница и действие MVC находятся в одном проекте, а пользователь на вашем веб-сайте, вы должны использовать вместо этого атрибут asp.net [Authorize]: он проверит файл cookie auth и не будет полагаться на логин/пароль, это намного безопаснее.

+0

Спасибо за ваш ответ. Но оба проекта разные, поэтому я использовал эту аутентификацию. Есть ли другой безопасный способ? Я пройду через это. – Ankita

+0

Вы все равно можете использовать файл cookie asp.net, но вам понадобится дополнительная настройка. Посмотрите на эту статью: https://www.codeproject.com/tips/438319/sharing-authentication-cookie-between-two-asp-net – glacasa

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