我有一个主要使用.NET MVC构建的网站。我主要是因为登录页面是使用网络表单完成的。登录页面使用表单身份验证。问题是当我使用浏览器后退按钮时,它会在用户仍然进行身份验证时导航回登录页面。我怎样才能阻止这种情况发生?
我尝试在登录页面加载时将缓存设置为null,但没有运气:
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
如果有任何可能有用的代码,请告诉我。我以前从未处理过这个问题,我不确定会有什么帮助。
答案 0 :(得分:0)
您可以添加一个功能,检查他们是否已登录,以及是否将其重定向到“仅限成员”页面。我无法发布任何代码,因为我在移动设备上。
答案 1 :(得分:0)
如果你想在浏览器上应用"无缓存"所有页面上的行为然后你应该把它放在global.asax。
protected void Application_BeginRequest()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
}
答案 2 :(得分:0)
最简单的方法-禁用操作方法的输出缓存(通过属性OutputCache),该方法负责显示登录页面并添加条件以检查用户是否已登录:
public partial class AccountController : Controller
{
[HttpGet]
[OutputCache(NoStore = true, Duration = 0)]
public virtual ActionResult Index()
{
if (User.Identity.IsAuthenticated)
return RedirectToAction("Index", "Home");
LoginModel model = new LoginModel();
return View(model);
}
}