Comment puis-je arrêter le bouton de retour une fois que l'utilisateur s'est déconnecté? (Le bouton LOGOUT est en page maître) Utiliser des formulaires Web
J'ai quelques pages, la dernière page est la dernière page et après la déconnexion lorsque je clique sur le bouton retour, sa page précédente est affichée. Comment puis-je éviter cela?
Le code doit être activé uniquement après la déconnexion. L’utilisateur doit pouvoir revenir en arrière n voir la page précédente s’il doit apporter des modifications pendant la connexion.
Vous devez définir les en-têtes HTML corrects. Selon ceci ce sont ceux qui fonctionnent sur tous les navigateurs:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Vous pouvez les définir comme ceci:
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("Expires", "0");
Fonctionne parfaitement même lorsque le bouton de retour est enfoncé dans le navigateur (testé dans crome)
J'ai utilisé une variable de session et j'ai également désactivé le cache
formulaire de connexion page 1(default.aspx) où je collecte l'ID de variable de session
Session["id"] = TextBox1.Text;// just the username</pre>
page 2(Default2.aspx) in page load
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Cache.SetNoStore();
if (Session["id"] == null)
{
Response.Redirect("Default.aspx");// redirects to page1(default.aspx)
}
else
{
Label1.Text = (string)Session["id"];//just display user name in label
}
}
En page 2 bouton de déconnexion
protected void Button1_Click(object sender, EventArgs e)
{
Session["id"] = null;
Response.Redirect("/WebSite5/Default.aspx");//redirects to page1(default.aspx)
}
function preventBack(){window.history.forward();}
setTimeout("preventBack()", 0);
window.onunload=function(){null};
<script>
function preventBack(){window.history.forward();}
setTimeout("preventBack()", 0);
window.onunload=function(){null};
</script>
ça peut marcher pour vous
Essayez ceci je trouve ce meilleur moyen de prévenir le retour. Vous avez cette solution dans codeproject.
nettoie la valeur de la session lors de la déconnexion avec ces méthodes courantes.
Session.Abandon();
Session.Clear();
Session.RemoveAll();
System.Web.Security.FormsAuthentication.SignOut();
Response.Redirect("frmLogin.aspx", false);
Sur la page ASPX, j'utilise Jquery avec JSON et vérifie la valeur de la session avec LogoutCheck () WebMethod.
<script type="text/javascript">
$(document).ready(function () {
CheckingSeassion();
});
function CheckingSeassion() {
$.ajax({
type: "POST",
url: "frmLogout.aspx/LogoutCheck",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
if (response.d == 0) {
window.location = '<%= BaseURL %>' + "frmLogin.aspx";
}
},
failure: function (msg) {
alert(msg);
}
});
}
WebMethod LogoutCheck () vérifie la valeur de session du serveur d'applications au moment du chargement du côté client.
J'ai créé cette méthode sur la page frmLogout.aspx comme ceci:
[WebMethod]
public static int LogoutCheck()
{
if (HttpContext.Current.Session["user"] == null)
{
return 0;
}
return 1;
}
Désormais, lorsque l'utilisateur ferme la page, il redirige vers la page de déconnexion, efface et abandonne les valeurs de la session. Désormais, lorsque l'utilisateur clique sur le bouton précédent du navigateur, le côté client est uniquement chargé et pendant cette période, le WebMethod CheckingSession () est déclenché dans JQuery et vérifie la valeur de session LogoutCheck () WebMethod. Comme la session est nulle, la méthode renvoie zéro et la page est redirigée à nouveau dans la page de connexion. Je n'ai donc pas besoin d'effacer le cache ni d'effacer l'historique du navigateur de l'utilisateur.
Essayé beaucoup de solutions mais seulement celle ci-dessous a fonctionné. Ajouté ci-dessous le script Java dans la page de déconnexion. Toutes les autres solutions fonctionneront bien dans les navigateurs autres que IE
window.onunload = function() {
window.location.href = "<%=request.getContextPath()%>/logout.jsp";
};
Cette approche ne fonctionnera qu'avec les sites MVC
C'est l'approche que j'utilise
Ajoutez le filtre suivant à votre FilterConfig (supposons que vous utilisiez MVC)
filters.Add(new System.Web.Mvc.AuthorizeAttribute());
Décorez maintenant les méthodes d'action que les utilisateurs peuvent utiliser sans être connectés avec
[AllowAnonymous]
Assurez-vous de décorer vos méthodes de connexion et d'enregistrement.
Désormais, lorsqu'un utilisateur cliquera en arrière (en supposant que la page s'actualise), il sera invité à se connecter à nouveau ... Je n'autorise pas la mise en cache de mes pages, ce qui force l'actualisation au bouton Précédent.
J'espère que ça vous aidera un peu
Je sais que c'est un vieux fil, mais quelqu'un pourrait l'aider. Vous pouvez empêcher le bouton de retour en utilisant l'événement javascript change.
<script>
var history_api = typeof history.pushState !== 'undefined';
if (location.hash == '#no-back') {
if (history_api) history.pushState(null, '', '#stay')
else location.hash = '#stay'
window.onhashchange = function () {
if (location.hash == '#no-back') {
alert('Action cannot be done!');
if (history_api) history.pushState(null, '', '#stay')
else location.hash = '#stay'
}
}
}
</script>
Vous pouvez visiter ici pour le tutoriel complet