我已经根据以下的实现了一个具有基本实现的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项目的身份验证方法?
谢谢!
为了使这项工作,您需要添加一个Authorization
标头,其中包含base64编码的登录和密码。
要编码基础64,您可以使用btoa()
var authHeader = window.btoa("login:password");
现在,您可以添加此标头(请参阅$ .AJAX文档)
$.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操作在同一项目中,并且用户已访问您的网站,则可能应该使用ASP.NET [Authorize]
属性:它将检查auth cookie,而不是依靠登录/密码,它更安全。