【问题标题】:jquery ajax call -- alternative to using session?jquery ajax 调用——替代使用会话?
【发布时间】:2012-02-28 08:05:02
【问题描述】:

我被要求不要在我的代码中的任何地方使用Session。目前,我正在向 Web 服务接口验证用户并将访问令牌(一个对象)存储在会话中,并将其重新用于后续请求。将它存储在服务器端的好地方是什么?出于安全原因,我不想将其发送给客户。

这是代码 -

 var person;
    $.ajax({
        url: 'Default.aspx/LoadPerson',
        data: JSON.stringify({ id: 1 }),
        type: 'POST',
        contentType: 'application/json;',
        dataType: 'json',
        success: function (result) {
            person = result.d;
        }
    });

我的 Web 服务方法看起来像这样 -

    [WebMethod]
    public static Person LoadPerson(int i)
    {
        var person = new Person();
        person.Name = "Bob";
        var userToken = SetupWebserviceUser();
        HttpContext.Current.Session["UserToken"] = userToken();
        // Call web service, get data.
        return person;
    }

【问题讨论】:

  • 为什么不能使用会话?这似乎是存储这些数据的理想场所。另一种选择是将令牌存储在数据库或服务器上的内存中,并使用 cookie 跟踪用户,但这正是会话在 .net 中的工作方式......
  • 该应用程序将被集成到网络场上的 Sharepoint 站点中。我们的管理员要求我避免使用会话。

标签: c# jquery web-services session


【解决方案1】:

在服务器端存储它的好地方是什么?

如果您不想将数据存储在客户端或视图中,则剩下的选项不多。
我能想到的唯一选项是数据库\静态变量\ XML 文件。

【讨论】:

  • 如果我将数据放在静态变量中,它会在调用中保留数据吗?编辑:确实如此!我只需要访问令牌对象的三个属性。我创建了三个静态变量,设置了值并能够在后续调用中访问它。现在,我该如何处理这些数据?
  • 静态可能具有潜在危险,请记住 Web 访问是多线程的,并确认您不能作为不应被允许的另一个用户访问它,而第一个用户仍处于活动状态。跨度>
  • 我有一个全局加载函数,在页面加载时只调用一次。我已在该函数的开头明确将变量设置为 null。现在工作正常。谢谢!
  • @enigma。没问题。如果存在多线程威胁,请确保使用lock
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2012-12-15
  • 2014-04-18
  • 1970-01-01
相关资源
最近更新 更多