0

有时,如果用户单击后退按钮然后选择另一个链接,而不是应显示的内容,则会出现登录屏幕。就像应用程序突然认为用户未通过身份验证一样。然后用户必须重新认证才能继续浏览。这发生在用户主动浏览时,因此不应发生超时,并且在身份验证后会显示内容(因此这不是授权问题)。

不幸的是,这个问题很难重现。最常遇到此问题的用户是使用带有 IE 7 的 Windows XP,但 Windows XP 和 IE 8 也出现了该问题。我似乎无法在带有 IE 9 或 Chrome 18 的 Windows 7 上重现该问题,但是因为这个问题很难重现,我不能自信地说这个问题是浏览器或浏览器版本相关的。

我们的 ASP.NET MVC 3 应用程序使用表单身份验证,角色信息存储在 SQL Server 数据库中,成员信息存储在 Active Directory 中。托管环境是 Windows 2008 R2 上的 IIS 7.5。

有没有其他人看到这个问题,并且知道解决方法?

4

1 回答 1

0

在服务器上,我猜您正在使用自定义 IPrincipal ,您需要为每个请求重新附加到请求线程?您是在 HTTPModule 中还是在 global.asax 中执行此操作?您要连接哪个页面事件来授权线程?

我注意到在不同的运行时上下文中可用的身份验证存在差异,具体取决于我使用的事件。我现在总是使用 OnAuthorizeRequest 并检查 application.Context.User != null。

但是您描述的症状听起来更像是请求中间歇性地缺少授权 cookie。

为每个请求添加一些调试日志并监控 cookie 和授权,看看您是否可以检测到导致它的条件。

于 2012-05-16T11:24:31.440 回答