ASP.NET MVC会话状态超时

时间:2015-04-30 16:22:33

标签: c# asp.net asp.net-mvc session session-state

鉴于ASP.NET MVC中的会话状态为not reccomended。我试图理解在什么情况下使用会话。我知道使用TempData会创建一个会话,但是还有其他什么情况,我是如何配置会话状态超时以获得更好的安全性的呢?

<sessionState cookieName="s" timeout="20" />

2 个答案:

答案 0 :(得分:5)

您参考的已接受答案部分说明

  

这往往导致过度使用会话,填充&#34;当前&#34;会话中的变量旨在指示当前与之交互的对象是什么。这种过度使用反过来使应用程序非常依赖于状态,并且更难以确定预期的行为(&#34;这个变量是否已填充?&#34;&#34;我是否拥有当前的订单ID?&#34;)。

     

MVC的结构是,您的网站是一个信息逻辑模型的视图。它鼓励通过使用简单的控制器来响应无状态操作,这些控制器响应作为HTTP请求的一部分传递的关键信息的操作

当您的网站需要将特定内容与特定用户绑定时,无论是出于安全还是个性化目的,会话都不是一件坏事。为此目的使用会话是好的,期望的和正常的。

您应该避免做的事情是在会话中填写您在Web应用程序中可能需要的任何和所有信息。花时间学习和理解MVC架构,并且有利于在实际呈现该页面时加载呈现给定页面所需的数据。仅缓存加载相对昂贵或在许多/所有页面上都需要的内容。

  

我是如何配置会话状态超时以获得更好的安全性的?

会话超时期间的主要问题是会话劫持攻击,它允许中间人拦截会话信息并在黑客的控制下控制来自不同设备的会话。对于大多数应用程序,我都没有看到默认会话超时有任何问题。

另一个问题是人们离开他们的设备,让人无人看管。这样做的人比你的网站有更多的安全担忧。

答案 1 :(得分:-1)

正如您所提到的,mvc中不建议使用会话。因为,在mvc身份用于身份认证,不需要session.the数据存储在配置文件中。

当您想要维护多个页面或多个控制器的值时,会在这种情况下使用会话。对于ex,之后,登录您保留用户名并保留,直到您留在应用程序中。虽然tempdata用于保存或维护当前操作的值,但在下一个操作之后该值将被丢弃

会话状态与安全性无关,因此为安全起见,无需更改会话超时值。