J'utilise FormsAuthentication pour userlogin . J'ai un problème après que l'utilisateur s'est déconnecté avec succès. Le bouton Précédent est un navigateur qui permet à l'utilisateur d'afficher les pages . J'ai essayé d'utiliser javascript.
<script type = "text/javascript" >
function preventBack() { window.history.forward(1); }
setTimeout("preventBack()", 0);
window.onunload = function () { null };
</script>
Mais le bouton de retour est complètement désactivé . Cela a fonctionné, je ne veux pas désactiver la fonctionnalité du bouton de retour lorsque l’utilisateur est connecté. Je veux que mon utilisateur LOGGED IN utilise le bouton de retour du navigateur normalement. Mais une fois qu'il a choisi de se déconnecter, il n'est plus autorisé à voir le contenu en appuyant sur Retour. J'ai aussi essayé d'utiliser
Session.Abandon();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now);
Mais cela ne fonctionne pas non plus. Comment puis-je résoudre ce problème?
Vous pouvez effacer l'historique du navigateur lorsque l'utilisateur se déconnecte:
var url = window.location.href;
window.history.go(-window.history.length);
window.location.href = url;
Cependant, cela ne serait pas particulièrement robuste - il repose sur le javascript, il ne fonctionnerait pas sur plusieurs onglets et ne servirait qu'à ennuyer l'utilisateur. IMO, le mieux est de définir les en-têtes de cache appropriés, de sorte que le navigateur ne mette pas en cache les pages que vous avez 'connectées' via un NoCacheAttribute correctement appliqué:
public class NoCacheAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
filterContext.HttpContext.Response.Cache.SetNoStore();
base.OnResultExecuting(filterContext);
}
}
Utilisez ce code dans la page HTML sur laquelle vous devez contrôler le bouton Précédent.
$().ready(function() {
if(document.referrer != 'http://localhost:8181/'){
history.pushState(null, null, 'login');
window.addEventListener('popstate', function () {
history.pushState(null, null, 'login');
});
}
});
Ce code bloquera l'événement du bouton de retour. La condition if est d'autoriser le bouton Précédent si la page précédente est ' http: // localhost: 8181/ '. Le bouton Précédent ne fonctionnera pas si la page précédente n'est pas ' http: // localhost: 8181/ '. Si vous devez bloquer toutes les pages précédentes, évitez la condition if. Les instructions history.pushState remplaceront l’URL de la barre d’adresse du navigateur pour «se connecter». Je vous recommande donc de changer le 'login' avec votre URL de page.
Avantages de cette méthode: -
En espérant que ma réponse aidera quelqu'un.
Désactiver le bouton Précédent n’est pas un bon moyen de répondre à vos besoins. Au lieu de cela, vous pouvez ajouter les trois balises suivantes dans votre fichier html, qui se charge de vider le cache.
<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">
Le moyen le plus simple que j'ai trouvé est d'utiliser OutputCache Attribute
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public class HomeController : Controller
{
}
<script language="JavaScript" type="text/javascript">
window.history.forward();
</script>
Veuillez passer à travers l'article http://www.aspdotnet-suresh.com/2011/11/disable-browser-back-button.html . J'ai utilisé la fonction javacript fournie par l'auteur dans ma page de mise en page pour éviter les problèmes de bouton de retour, car je dois donner accès à certaines pages à tous les visiteurs de mon site Web.
Cette solution a fonctionné pour moi dans IE 11 et dans la version 43.0.2357.130 de Chrome, m.
J'espère que cela t'aides.
var url = window.history.forward();
window.history.go(-window.history.length);