我有一个asp.net mvc应用程序。我有一个身份验证表单:所以我使用了一个静态类,它包含一个静态布尔值,表示用户的连接:
public static class CompteModels
{
private static bool connected = false;
public static bool Connected
{
get { return CompteModels.connected; }
set { CompteModels.connected = value; }
}
}
在控制器中我有这个片段:
public ActionResult Index()
{
if (Upload.Models.CompteModels.Connected)
{
return View();
}
else return RedirectToAction("Login", "Account");
}
public ActionResult Logout()
{
Upload.Models.CompteModels.Connected = false;
return RedirectToAction("Login", "Account");
}
问题是:当我登录我的帐户然后我退出如果我come back to the previous page
我的帐户页面重新打开(重定向到主页不起作用)
除了我刷新页面。
问题是什么?我如何能够编码我的代码?
答案 0 :(得分:2)
“问题”是页面被缓存并且用户正在查看缓存页面。它实际上并未向您的网站发出请求。如果您不希望任何网站被缓存,那么他们总是从服务器加载页面,您可以将以下属性添加到所有控制器或基本控制器(如果有):
[OutputCache(NoStore = true, Duration = 0)]
您丢失了缓存中的所有带宽节省,但如果您的网站内部有高度敏感的数据,则可能值得。
我看到其他“黑客”涉及在每个页面加载时发出ajax请求,如果由于未经授权而失败,则重定向到登录屏幕。