0

我正在开发我的项目以在 asp.net 中构建一个站点。使用 Session 登录页面时出现问题。我的登录页面将检查会话以了解用户之前是否登录。如果他们没有登录表单,将出现允许他们登录。否则,将出现注销按钮。

一切正常,登录后,页面将重定向到 default.aspx 并保存会话,我知道这是因为用户名出现在默认页面中。但是在默认页面,如果我按浏览器上的返回按钮返回登录页面,登录表单会出现在应该有注销按钮的位置。然后,如果我按 f5 或在其他选项卡中打开登录页面,则可以使用注销按钮。

有人可以帮我弄这个吗!谢谢你,对不起我的英语不好!:)

4

3 回答 3

0

向后导航时,默认情况下,页面状态将与您登录之前的状态相同。因此,如果不刷新该页面以检查会话状态,您可能无能为力。

于 2013-06-19T08:51:11.213 回答
0

用户在浏览器缓存中看到的页面是一样的。这就是为什么您看到登录按钮而不是注销的原因。您可以禁用页面的缓存,但是您将有更多的服务器负载。我注意到与失去会话有关。

为了使遮阳篷更完整,如评论中所示:

protected void Page_Init(object sender, EventArgs e) 
{
  Response.Cache.SetCacheability(HttpCacheability.NoCache);
  Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
  Response.Cache.SetNoStore(); 
}

将阻止页面在浏览器上缓存。

于 2013-06-19T08:54:20.100 回答
0

在您检查用户是否登录的位置放置一个断点(您确定是否显示“注销”按钮),然后在登录后导航回来。我很确定该页面是从缓存中加载的,因此该页面看起来与用户登录之前完全一样。您可能需要一个 javascript 解决方案。

有人在这里发布了相同的问题,并提供了一些他们尝试过的解决方案http://forums.asp.net/t/1118630.aspx

于 2013-06-19T09:01:10.083 回答