C# 在用户登录时使用AJAX运行操作
我目前正在为一个使用C#.NET作为后端的网站编程一个消息传递系统 该消息传递系统与Facebook的web界面非常相似,它允许您通过AJAX与他人“聊天” 我创建了一个webservice(C#),用于处理实际发送的消息位。我使用JQuery通过以下代码激活该服务:C# 在用户登录时使用AJAX运行操作,c#,ajax,web-services,jquery,C#,Ajax,Web Services,Jquery,我目前正在为一个使用C#.NET作为后端的网站编程一个消息传递系统 该消息传递系统与Facebook的web界面非常相似,它允许您通过AJAX与他人“聊天” 我创建了一个webservice(C#),用于处理实际发送的消息位。我使用JQuery通过以下代码激活该服务: // generic webservice used to retrieve count from db function SendMessageAJAX(taskID, sendeeID, sendeeType, recipie
// generic webservice used to retrieve count from db
function SendMessageAJAX(taskID, sendeeID, sendeeType, recipientId, recipientType, content) {
$.ajax({
type: "POST",
url: "/WS/UIServices.asmx/SendMessage",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ 'content': content, 'SendeeType': sendeeType, 'SendeeId': sendeeID, 'RecipientType': recipientType, 'RecipientId': recipientId, 'taskID': taskID }),
dataType: "json",
success: function (msg) {
// refresh chat area
LoadMessages(false);
},
error: function () { alert("error"); }
});
}
如您所见,我正在请求中传递发件人/收件人信息。显然,代码非常危险,因为任何人都可以修改这些值并模拟任何用户
我在服务器端的会话变量中有当前登录用户,但代码是异步运行的,这意味着会话变量在运行时没有定义
通过AJAX安全运行这些操作的最佳方法是什么?有两个选项:
IHttpAsyncHandler
中实现您的服务器代码,并实现iRequestResessionState
,这样您就可以访问会话使用ssl始终是首选,但如果您有时间实施,其他选项也是可行的。客户端安全处理始终是可破坏的,在服务器端执行所有安全检查由于异步ajax,我不确定如何访问会话变量。我使用了iRequiresessionState实现,效果很好。如果响应对您有帮助,您可以随时投票或将其标记为答案,以便它也能帮助其他人。