我已根据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项目调用经过身份验证的方法?
谢谢!
答案 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,而不是依靠登录/密码,它更加安全。