从Webform调用Authenticated操作方法

时间:2016-12-27 08:03:43

标签: c# asp.net-mvc webforms basic-authentication

我已根据this

实现了一个基本实现的MVC应用程序

现在,当我使用AJAX从我的Webform应用程序调用此操作方法时,它没有要求凭据并抛出401错误。

这是我的ajax功能:

  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项目调用经过身份验证的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

为了完成这项工作,您需要添加一个Authorization标头,其中包含base64编码的登录名和密码。

要对base 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);
    }
});

请注意这不是很安全,因为登录/密码是从客户端获知的,并且以易读的方式发送,因此攻击者很容易找到。

如果webform页面和MVC操作在同一个项目中,并且用户在您的网站上被ogged,您应该使用asp.net [Authorize]属性:它将检查auth cookie,而不是依靠登录/密码,它更加安全。