Предотвращение просмотра страницы после выхода из системы - PullRequest
2 голосов
/ 01 апреля 2012

Это очень известные вопросы в Google.Я нашел несколько предложений для достижения этой функции.Процедура, которую я реализовал, описана ниже:

Я добавил ссылку выхода из системы на домашней странице и, щелкнув по этой ссылке, я перенаправляю пользователя на страницу выхода из системы.

protected void LinkButton1_Click(object sender, EventArgs e) {      
    Response.Redirect("../Logout.aspx");
}

Сейчас вLogout.aspx, который я добавил:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");

в коде метода Page_Load позади.

Также я добавил asp:ScriptManager и asp:Timer к этому Logout.aspx:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:Timer ID="Timer1" runat="server" Interval="1000" ontick="Timer1_Tick" > 
</asp:Timer>

Метод Timer1_Tick:

protected void Timer1_Tick(object sender, EventArgs e) {
    FormsAuthentication.SignOut();
    Session.Abandon();
    FormsAuthentication.RedirectToLoginPage();
}

Этоперенаправление на Login.aspx с Logout.aspx.Также я добавил следующий метод JavaScript в Logout.aspx:

function disableBackButton() {
    window.history.forward(1);
}
disableBackButton();
window.onload = disableBackButton();
window.onpageshow = function (evt) { if (evt.persisted) disableBackButton() }
window.onunload = function () { void (0) } 

И он работает, только если я нажимаю кнопку «Назад» или нажимаю несколько раз с паузой.Но если на него нажимают несколько раз подряд, то меня снова помещают на домашнюю страницу.

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Добавьте следующий код в Page_Load главной страницы вместе с другими методами, описанными в вопросе:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
Response.AppendHeader("Pragma", "no-cache");

Это будет работать.

1 голос
/ 01 апреля 2012

Я использую следующий выход, где я очищаю куки, и у меня не было проблем с выходом из системы моих пользователей «по-настоящему».

Редактировать :

Обратите внимание, что браузер часто кэширует страницы в своей истории, и я не думаю, что вы можете запретить им показывать страницы после выхода из системы!

FormsAuthentication.SignOut();
Session.Abandon();

// clear authentication cookie
HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
cookie1.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie1);

// clear session cookie
HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
cookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(cookie2);

FormsAuthentication.RedirectToLoginPage();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...