Кнопка Назад не должна переходить на предыдущую страницу после выхода - PullRequest
2 голосов
/ 26 декабря 2009

Я занимаюсь разработкой веб-сайта asp.net и не использую встроенные средства проверки подлинности asp.net. Я создал вручную таблицы для пользователей для сайта.

То, что я хочу, выглядит следующим образом

  • После входа в систему пользователь может получить доступ к страницам (что уже сделано)
  • Когда пользователь нажимает кнопку выхода (пользователь переходит на определенную страницу - пример - default.aspx)
  • Теперь, когда пользователь нажимает кнопку «Назад» в браузере, он не должен переходить на предыдущую страницу (что делается на страницах Yahoo - я хочу реализовать то же самое)

Ответы [ 3 ]

2 голосов
/ 26 декабря 2009

Чтобы пользователи не могли видеть предыдущую страницу при нажатии кнопки «Назад», необходимо указать браузеру не кэшировать эту страницу:

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

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

1 голос
/ 27 декабря 2009

ответ на ваш вопрос:

  • для Когда пользователь нажимает выход. (пользователь переходит на конкретную страницу - пример - default.aspx) Вы можете добавить LinkButton в качестве ссылки выхода и в обработчике события click вы можете написать Response.Redirect ( "Default.aspx");

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

    защищенное переопределение void OnPreRender (EventArgs e)

    {

     base.OnPreRender(e);
    string strDisAbleBackButton;
    strDisAbleBackButton = "<script language="javascript">\n";
    strDisAbleBackButton += "window.history.forward(1);\n";
    strDisAbleBackButton += "\n</script>";
    ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "clientScript", strDisAbleBackButton);
    

    }

см. Csharpdotnetfreak.blogspot.com

1 голос
/ 26 декабря 2009

Чтобы страница не кэшировалась, браузер должен соответствующим образом реагировать на инструкции кэширования, но нет гарантии, что это будет работать на каждом браузере! (Соответственно, злой человек может написать свой собственный браузер, чтобы игнорировать информацию о кешировании, или написать прокси, чтобы удалить ее ...)

Таким образом, вы не сможете заставить это работать 100% времени, но вы всегда будете сталкиваться с проблемой, заключающейся в том, что пользователь может легко сделать снимок экрана, распечатать страницу, сохранить копию на своем диске и т. Д. в любом случае, после того, как вы передали им страницу ...

...