【发布时间】:2014-01-07 10:04:38
【问题描述】:
我只是尝试使用我在处理程序上生成的令牌并返回到客户端进行身份验证。 (目的:使用令牌对所有请求进行身份验证,而不是第一个身份验证步骤)
我进行了测试,客户端确实获得了令牌,但是在尝试涉及通过令牌进行身份验证的方法时给出了“parsererror”状态和“Unexpected Token T”语法错误的描述错误。
生成运行良好的令牌的代码
byte[] time = BitConverter.GetBytes(DateTime.Now.ToBinary());
byte[] key = Guid.NewGuid().ToByteArray();
string _token = Convert.ToBase64String(time.Concat(key).ToArray());
发送测试请求请求的 AJAX 代码
function test() {
var jsonParam = { token: _token , type: "check" }
$.ajax({
url: "Test.ashx",
type: "post",
data: JSON.stringify(jsonParam),
dataType: "json",
contentType: 'application/json; charset=utf-8',
async: false,
success: function (response) {
document.getElementById('eCode').innerHTML = response.eCode;
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responeText + "\r\nStatus: " + textStatus + "\r\n" + "Error: " + errorThrown);
}
});
}
响应此 AJAX 请求的服务器代码
if (postType == "check")
{
// (dict is the deserialized received JSON, a dictionary of [string, object]
string _token = dict["token"] as string;
byte[] data = Convert.FromBase64String(_token);
DateTime when = DateTime.FromBinary(BitConverter.ToInt64(data, 0));
if (when < DateTime.Now.AddHours(-12))
{
// Too old
context.Response.Write(new Code { eCode = "old" });
}
else if (when > DateTime.Now.AddHours(1))
{
// Impossible
context.Response.Write(new Code { eCode = "impossible" });
}
else
{
// Good
context.Response.Write(new Code { eCode = "Time: " + when.ToString("dd/MM/yyyy") });
}
}
并且收到以下错误:parsererror, Syntax Error of "unexpected token T"。此错误出现在客户端警报上 找不到遇到完全相同问题的人。
【问题讨论】:
-
你从哪里得到错误?客户端还是服务器?哪一行代码?
-
错误来自客户端的alert
-
它给了你什么?
标签: c# jquery asp.net ajax token