Asp.net mvc 2 即使不使用会话存储数据,也要保留sessionId?
你好, 我正在构建一个ASP.NET MVC 2网站,需要将当前用户/会话绑定到一些数据。以下是可能的解决方案,但最佳做法是什么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,然后将其设
我的解决方案:我最终为当前客户端创建了一个GUID,然后将其设置为表单上的隐藏字段。但是,在正确呈现隐藏字段时,我确实遇到了一些问题,请参见:由于web本质上是无状态的,因此跨web请求维护状态始终是一个挑战 无论您在cookie中使用隐藏的Guid(或其他系统唯一标识符)还是会话ID,这两者都可能被滥用。也就是说,大多数实现“会话状态”的系统都是通过使用cookie来实现的
会话状态“bag”的目的是在web请求之间存储信息,这正是您提到的目标,因此尽管它可能感觉“错误”,但它是一种非常普遍接受的方法。记住,客户端浏览器只存储会话ID,而不是实际的会话数据;这在服务器上保留。您是否正在使用身份验证,并且此
Id
是否与当前经过身份验证的用户有某种关联?不,将不会有身份验证帐户!TempDataDictionary使用会话如果我没有弄错的话,区别在于TempDataDictionary将在下一个请求后被清除,而seision将保留数据,直到会话时间结束。TempDataDictionary seemse也没有绑定到浏览器?@SnowJim:正确,TempData纯粹用于将数据从控制器传递到视图,而不是持久化的。