0

我可能在某处缺少一个设置,但我对这个问题完全傻眼了。我有一个动态数据网站,它使用基于角色的权限来限制特定用户可以查看、编辑和删除的内容。当用户首次登录并被重定向到默认页面时,它会显示该用户角色的所有正确表格。单击任何可用表后,然后单击浏览器后退按钮,默认页面将显示每个无论用户角色规定什么,数据库中的表。我傻眼了,因为在任何时候都没有任何用户角色可用的每个表的视图,但 ie9 设法缓存了这个虚构的页面版本。我知道这一定是缓存问题,因为单击后退箭头时不会触发默认页面上的 page_load。如果我刷新默认页面,它将再次正确显示。

我正在使用母版页,并明确关闭了我在其页面加载中能想到的所有形式的缓存。

HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
HttpContext.Current.Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetValidUntilExpires(true);

需要注意的另一件事是,当我在 ff、chrome 或 safari 中测试网站时,这似乎只是 ie9 的问题,事情按预期工作。

4

1 回答 1

0

您必须将登录用户的角色存储在会话变量中,然后根据该值显示所需的数据(表或其他)。如果数据是根据用户在会话中的角色显示的,那么我不会认为你会有任何问题。Response.Cache.SetNoStore();您也可以通过提供页面加载功能来禁用缓存。

于 2013-01-05T05:00:42.007 回答