ASP.NET MVC4中存储用户信息的策略是什么?

3
现在我正在阅读一本书,书中写道:
"会话状态(Session State)和应用程序状态(Application state)都用于存储少量不经常更改的不安全全局信息"
基于此,我有五个问题:
  1. 在MVC4中,我们可以通过HttpContext.Session访问会话(Session),这与HttpContext.Current.Session有何区别?
  2. 应用程序状态(Application state)用于什么?
  3. 会话(Session)和应用程序状态(Application state)之间的实际区别是什么?
  4. 哪些用户信息不能存储在会话(Session)中,只能存储在服务器数据库中?
  5. 许多浏览器端的Cookie已被禁用,这是否意味着在开发Web应用程序时不再使用Cookie?
希望回答这些问题不仅对我有所帮助,也能帮助其他人。
欢迎任何建议!
2个回答

2
  1. 没有区别。在非视图中使用 HttpContext.Current.Session

  2. 用于存储适用于所有用户的应用程序级信息。一次只有一个,对于所有用户的值都是相同的。

  3. 会话是以用户为单位的,而应用程序是系统范围的。如果需要保留特定于用户的信息,请使用会话。如果该值对所有用户都相同,请使用应用程序。

  4. 不确定你的意思是什么。


2
  1. 它们都指向同一个对象。
  2. 如果要在不同的Session对象之间共享数据,可以使用ApplicationState对象,这些对象与具体用户会话相关联。
  3. 我在上一个点中已经说明了主要区别。进一步解释一下:存储在Session中的对象仅可由在该会话下运行的请求访问(它们在会话Cookie或标识字符串中)。另一方面,在Application中存储的对象可在任何地方使用(例如在global.asax中),并且不依赖于当前用户。
  4. 这取决于你的偏执程度。我不会以未加密的格式在Session中存储信用卡信息、社会安全号码或密码。另一方面,我也不会将它们以未加密的形式存储在数据库中。SessionState可以配置为驻留在数据库中,因此可以在不同的机器之间共享。
  5. ASP.NET更适合使用cookies。虽然有让它无需cookies工作的方法,但这需要大量的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接