我正在创建一个网页,用户可以在其中注册自己和他们新购买的产品。
因此,该页面最初包含两个输入字段:序列号和他们的社会保险号。这些值将针对两个不同的 API 进行验证。用户不应滥用这些 API 调用,因为第二个调用每次调用都要花钱。另一个也应该以某种方式受到限制,以便用户无法访问我们所有的序列号。
并希望用ajax 制作这个网页,以创造良好的用户体验。所以我使用jQuery ajax 函数来调用我放在页面代码隐藏中的webmethods。
反过来,每个 Web 方法都使用凭据调用匹配的 API。但这是否意味着任何人都可以编辑脚本客户端,以便他们可以对 API 进行多少次调用?
我需要能够防止这种情况发生。我该怎么做呢?我可以检查调用不是由用户插入的脚本发起的吗?
另一个问题,如何在客户端验证两个 ajax 调用都已成功返回?如果只有一个 ajax 调用,这很容易。我会在成功中做一些事情:ajax 函数的一部分。我可以检查输入字段旁边的所有复选标记是否可见,但这很容易被用户篡改。那么有什么好方法呢?一旦成功进行了两次调用,我想启用一个按钮,以便用户可以确认来自 API 的结果。
[WebMethod]
public static string CheckSerialNumber(String _input)
{
string result = null;
var client = new CheckSerialNumberClient(); //A service reference to the API
try
{
//make the API call.
result = client.checkSerialNumber(_input);
}
catch (Exception)
{
result = "An error occured";
}
return result;
}
[WebMethod]
public static string GetCustomerInfo(String _input)
{
string result = null;
var client = new CustomerInfoClient(); //A service reference to the API
try
{
//make the API call.
result = client.getCustomerInfo(_input, myCredentials); //credentials is so that the company that has the API can charge us for each call.
}
catch (Exception)
{
result = "An error occured";
}
return result;
}
jQuery,我得到了这个工作,但不妨展示它。这是在针对正则表达式验证输入之后:
$.ajax({
type: "POST",
url: "/Default.aspx/CheckSerialNumber",
data: ...
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
return true;
}