在我以前的工作(ASP.NET webforms)中,我使用了HttpContext.Current.Session
对象来保存当前用户会话的安全相关用户数据,例如,webforms会话值现在应该存储在MVC承载令牌中吗?
Session("userID") = 4525
Session("customerId") = 123
Session("importantValue") = "ABC"
在WebAPI 2上学到了很多东西,我现在开始学习MVC。我不断地读取Session
和/或HttpContext.Current
应与MVC避免...
...但有没有一个很多简单的选择清晰。有些人说使用TempData
而其他的cookie,但也都有缺点。
我的应用程序数据库很大,所以我想避免触击数据库来重新读取每个请求的这些值。在WebAPI2中,有持久性令牌被序列化为cookie。身份标识足够安全以保存这些数据并避免用户篡改(如果通过SSL使用)?
这不是一个简单的问题,由于开发人员的多样化“味道”。如果你知道你在做什么,使用'Session'对象没有什么坏处。 – 2014-08-27 13:38:48
请链接到声称你不应该使用会话的来源。应该有考虑,但从不说永远。如果上述消息来源没有激发你不应该使用该会话的原因,请不要继续阅读它们。在某些情况下,为什么不应该使用会话有完全有效的原因,但是由您来评估这些情况是否适用于您。 – CodeCaster 2014-08-27 13:41:46
反复听到的原因是“会话劫持”。但通过一些调整,这可以完全消除。另一个是你需要存储的数据量。你有数百兆的数据,那么使用现有的缓存机制可能会更好。 – 2014-08-27 13:43:25