C# jquery ajax调用——使用会话的替代方案?
我被要求不要在代码中的任何地方使用C# jquery ajax调用——使用会话的替代方案?,c#,jquery,web-services,session,C#,Jquery,Web Services,Session,我被要求不要在代码中的任何地方使用会话。目前,我正在对web服务接口的用户进行身份验证,并将访问令牌(一个对象)存储在会话中,然后将其重新用于后续请求。在服务器端存储它的好地方是什么?出于安全原因,我不想将其发送给客户 这是密码- var person; $.ajax({ url: 'Default.aspx/LoadPerson', data: JSON.stringify({ id: 1 }), type: 'POST',
会话
。目前,我正在对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;
}
在服务器端存储它的好地方是什么
如果您不想将数据存储在客户端或服务器中,那么剩下的选项就不多了。我能想到的唯一选项是数据库\静态变量\ XML文件 为什么你不能使用这个会话?这似乎是存储这些数据的最佳场所。另一个选项是将令牌存储在数据库或服务器内存中,并使用cookie跟踪用户,但这正是会话在.net中的工作方式……该应用程序将集成到web场上的Sharepoint网站中。我们的管理员要求我避免使用会话。如果我把数据放在一个静态变量中,它会在调用之间保存数据吗?编辑:是的!我只需要访问令牌对象的三个属性。我已经创建了三个静态变量,设置了值,并且能够在后续调用中访问它。现在,我该如何处理这些数据?静态可能会有潜在的危险,请记住web访问是多线程的,并验证您不能作为另一个用户访问这些数据,在第一个用户仍处于活动状态时,不应允许该用户访问这些数据。我有一个全局加载函数,在加载页面时只调用一次。我已经在函数的开头显式地将变量设置为null。现在工作很好。谢谢@谜没问题。如果存在多线程威胁,请确保使用
lock
。