C# 在用户登录时使用AJAX运行操作

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

我目前正在为一个使用C#.NET作为后端的网站编程一个消息传递系统

该消息传递系统与Facebook的web界面非常相似,它允许您通过AJAX与他人“聊天”

我创建了一个webservice(C#),用于处理实际发送的消息位。我使用JQuery通过以下代码激活该服务:

// 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安全运行这些操作的最佳方法是什么?

有两个选项:

  • 您可以对ajax请求进行加密,比如对网站使用SSL

  • IHttpAsyncHandler
    中实现您的服务器代码,并实现
    iRequestResessionState
    ,这样您就可以访问会话


  • 使用ssl始终是首选,但如果您有时间实施,其他选项也是可行的。

    客户端安全处理始终是可破坏的,在服务器端执行所有安全检查由于异步ajax,我不确定如何访问会话变量。我使用了iRequiresessionState实现,效果很好。如果响应对您有帮助,您可以随时投票或将其标记为答案,以便它也能帮助其他人。