Думаю, это довольно распространенная тема, но я не могу решить свою проблему.В моей сборке приложения с ASP.NET MVC 3 я использую аутентификацию формы вместе с кэшированием вывода:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" name=".CMS" protection="All" timeout="43200" cookieless="UseCookies"/>
</authentication>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Dynamic" duration="3600" location="Client" varyByParam="id" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
My LogOff
действие выглядит следующим образом:
public ActionResult LogOff()
{
_formsService.SignOut();
return RedirectToAction("Index", "Dynamic");
}
это действиеиспользует простой SignOut
метод:
public void SignOut()
{
FormsAuthentication.SignOut();
HttpContext.Current.Session.Abandon();
// clean auth cookie
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, string.Empty);
authCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(authCookie);
// clean session cookie
HttpCookie sessionCookie = new HttpCookie("ASP.NET_SessionId", string.Empty);
sessionCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(sessionCookie);
}
Но проблема заключается в следующем :
страница http://localhost/app/dynamic/page защищена.Я не могу войти на эту страницу, пока не войду.После входа у меня есть доступ для просмотра такой страницы.После выхода из системы и повторного входа на страницу, к сожалению, я все еще могу просмотреть ее содержимое.
Как запретить доступ к защищенным страницам после выхода из системы, когда включено кэширование и я ранее посещал такие страницы?Что я делаю не так?Куки должны быть очищены другим способом?
С уважением