Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 即使不使用会话存储数据,也要保留sessionId?_Asp.net Mvc 2_Session_Identity - Fatal编程技术网

Asp.net mvc 2 即使不使用会话存储数据,也要保留sessionId?

Asp.net mvc 2 即使不使用会话存储数据,也要保留sessionId?,asp.net-mvc-2,session,identity,Asp.net Mvc 2,Session,Identity,你好, 我正在构建一个ASP.NET MVC 2网站,需要将当前用户/会话绑定到一些数据。以下是可能的解决方案,但最佳做法是什么 创建GUID并将其设置为视图上的隐藏字段,然后数据将保存在Singleton对象中(如缓存)。但是,安全性将不是最好的(用户可以更改隐藏字段的值) 使用Session.SessionId。为了在两次通话之间保持相同的SessionId,我需要在会话中存储一些感觉错误的东西?我不确定这里是否有安全问题 问候 我的解决方案:我最终为当前客户端创建了一个GUID,然后将其设

你好,

我正在构建一个ASP.NET MVC 2网站,需要将当前用户/会话绑定到一些数据。以下是可能的解决方案,但最佳做法是什么

  • 创建GUID并将其设置为视图上的隐藏字段,然后数据将保存在Singleton对象中(如缓存)。但是,安全性将不是最好的(用户可以更改隐藏字段的值)
  • 使用Session.SessionId。为了在两次通话之间保持相同的SessionId,我需要在会话中存储一些感觉错误的东西?我不确定这里是否有安全问题
  • 问候


    我的解决方案:我最终为当前客户端创建了一个GUID,然后将其设置为表单上的隐藏字段。但是,在正确呈现隐藏字段时,我确实遇到了一些问题,请参见:

    由于web本质上是无状态的,因此跨web请求维护状态始终是一个挑战

    无论您在cookie中使用隐藏的Guid(或其他系统唯一标识符)还是会话ID,这两者都可能被滥用。也就是说,大多数实现“会话状态”的系统都是通过使用cookie来实现的


    会话状态“bag”的目的是在web请求之间存储信息,这正是您提到的目标,因此尽管它可能感觉“错误”,但它是一种非常普遍接受的方法。记住,客户端浏览器只存储会话ID,而不是实际的会话数据;这在服务器上保留。

    您是否正在使用身份验证,并且此
    Id
    是否与当前经过身份验证的用户有某种关联?不,将不会有身份验证帐户!TempDataDictionary使用会话如果我没有弄错的话,区别在于TempDataDictionary将在下一个请求后被清除,而seision将保留数据,直到会话时间结束。TempDataDictionary seemse也没有绑定到浏览器?@SnowJim:正确,TempData纯粹用于将数据从控制器传递到视图,而不是持久化的。