是什么让asp.net C中的请求成为新请求#

时间:2013-06-18 07:14:11

标签: c# asp.net session-cookies session-timeout

好吧基本上我正在尝试在我的Web应用程序中实现表单身份验证,为此我需要知道Web服务器如何决定请求是否是新的。这是因为webs-server为每个新请求创建一个新会话。

所以我每次成功登录都会创建一个authenticatecoookie,它会持续一段时间,直到它超时,无论天气如何,用户关闭他/她的浏览器或失去连接,并且必须重新连接,因为此cookie存储在客户端计算机上。因此,在这种情况下,让我们说用户重新连接到服务器,他的authenticatecoookie还没有超时。因此,他的请求已经过身份验证,这也意味着这不是新请求吗?并且服务器不会为它创建一个新的会话,因为它已经退出了吗?

另一种情况/场景是,如果authenticatecoookie在用户重新连接之前超时,则该请求将不会被认证,但是该请求也会被视为新请求,因此服务器不会为其创建新会话一个人已经退出了吗?

我问这个是因为我在用户成功登录后在会话中存储了一个用户ID,以便当authenticatecoookie超时时我可以在会话中查找会话中的用户ID比authenticatecoookie晚得多,然后更新我的usertable以表明该用户不再登录

1 个答案:

答案 0 :(得分:1)

  

因此,在这种情况下,让我们说用户重新连接到服务器和他的   authenticatecoookie还没有超时。所以他的要求就是这样   已经过身份验证,这也意味着这不是新的   请求?

从表单身份验证系统的角度来看,这不是新请求,因为请求提供了有效的表单身份验证cookie。

  

并且服务器不会为它创建一个新的会话,因为它已经退出了吗?

会话处理机制与表单身份验证机制不同。客户端可以使用有效的表单身份验证cookie命中服务器,并且没有有效的会话cookie(并且,因为这些机制是不同的,任何组合都是可能的) 因此,如果需要会话且客户端没有会话,服务器将创建一个新会话。

  

这样当authenticatecoookie超时我就可以去了   会话中的用户ID,因为会话超时很久   而不是authenticatecoookie

如果您的站点主要基于身份验证,那么您可以通过配置比会话持续时间更长的表单身份验证持续时间来执行相反的操作。

  • 在您的网页/控制器/操作上强制执行表单身份验证
  • 在您的页面/操作处理期间,确保用户ID存储在会话中。如果没有,请存储它以便在session_end
  • 上可用
相关问题