应用程序在两个超时情况下将用户重定向到登录页面时的会话超时和身份验证超时值

时间:2012-10-31 05:29:55

标签: asp.net asp.net-mvc-3 session-timeout

在我的Asp.Net MVC 3应用程序中,我有一个自定义会话到期处理程序属性过滤器,用于在调用控制器操作之前检查会话是否已过期。

如果会话已过期,则自定义过滤器会从表单身份验证中注销用户,并将用户重定向到登录页面。我也知道,当访问授权内容时,用户的授权失败,将发生相同的操作流程。

在这种情况下,会话或身份验证时间导致相同的效果(用户从表单身份验证并重定向到登录页面),对于超时(会话)是否大于或小于是一个主要问题超时(认证)?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您的授权属性可能会成为此处的守门员。 问题是当您的会话在表单身份验证令牌之前超时,例如在应用程序池重新启动时。听起来你正在处理这个问题(如果不是我为此编写代码)。在相反的情况下,您需要确保您不依赖于会话中的任何非auth页面/操作,否则当用户可以匿名访问页面时,您可能会遇到期望会话值的风险。除此之外,我无法想象是否会出现另一种会导致问题的情景。

您的身份验证属性应始终捕获此情况并重定向到再次启动会话的登录页面。

请注意会话 - 在访问会话对象的同时,对该用户的多个请求(即Ajax请求)将一次只处理一个,因为默认情况下会话被锁定为该用户。

其他请求将逐字挂起,直到访问会话对象的其他请求完成为止。如果只有主请求访问会话但是该用户的其他重叠请求(如果有的话)没有,这不是问题。