Prévenir le bouton de retour après déconnexion
Je ne veux pas que l'utilisateur de revenir en arrière pour garantir des pages en cliquant sur les bouton de retour après s'être déconnecté. Dans ma déconnexion de code, je suis désarmer les séances et de les rediriger vers la page de connexion.Mais, je pense que le navigateur est mise en cache de la page de sorte qu'il devient visible en dépit de la session en cours détruit de déconnexion.
Je suis en mesure d'éviter de ce fait de ne pas autoriser le navigateur à cache
header("Cache-Control", "no-cache, no-store, must-revalidate")
Mais de cette façon, je suis de perdre l'avantage de la mise en Cache du Navigateur.
S'il vous plaît suggérer une meilleure manière d'y parvenir. J'ai l'impression, il doit y avoir un moyen de gérer cela en javascript côté client
Une solution possible qui pourrait ne pas nécessairement être toujours utilisable en tant que l'utilisateur peut disposer de données sensibles sur son écran, puis se déconnecte. Un autre vient par (bien que le poste de travail doit être verrouillé 😉 ) et les presses et voit (bien que mis en cache) les données de l'utilisateur précédent. Nous avons l'habitude d'ajouter un message d'information, d'alerte à l'utilisateur de fermer le navigateur (juste pour être sûr que toutes les sessions ont été effacées). Ce n'est pas nécessairement la meilleure façon, mais au moins vous avez donné à l'utilisateur l'info sur le problème potentiel.
Un bon marché, de fixer, si tout le reste échoue serait une "Veuillez fermer cette fenêtre pour des raisons de sécurité" sur la session à la page.
Je suis confronté à la même question. Est-il un était d'afficher un contenu différent si l'utilisateur n'a frapper le bouton de retour et n'est plus connecté? Je tiens à garder d'utiliser quoi que ce soit côté client. Facebook fait cela, si vous avez remarqué, après s'être déconnecté, et si vous essayez de revenir il va afficher une page différente, peu importe si quoi que ce soit côté client est activé ou désactivé. Comment Est-ce fait? Je suis en supposant qu'il est probablement plus alors seulement de contrôle de cache? J'espère que quelqu'un a quelque chose de bon aperçu de ce.
OriginalL'auteur piyush | 2012-05-09
Vous devez vous connecter pour publier un commentaire.
Mettre en PHP et pas javascript.
En haut de chaque page, vérifier pour voir si l'utilisateur est connecté. Si non, ils doivent être redirigé vers une page de connexion:
Comme vous l'avez mentionné, lors de la déconnexion, il suffit de désactiver la logged_in variable de session, et de détruire la session:
Si l'utilisateur clique sur le dos maintenant, pas de logged_in variable de session seront disponibles, et la page ne se charge pas.
Quel est donc le problème? L'utilisateur ne peut pas interagir avec le serveur après déconnexion et avec le bouton de retour, il a seulement récupérer les données qu'il a déjà vu. Si ces données peuvent être utilisées à mauvais escient par quelqu'un d'autre, juste de l'avis à l'utilisateur de fermer la fenêtre ou de l'utilisation annonymous onglet, si il ne le fait pas, c'est de sa faute.
OriginalL'auteur Jonathan Spiller
J'ai été confronté à ce même problème et a passé toute la journée en pensant à elle,
Enfin rectifié comme suit:
Login script de validation si l'utilisateur est authentifié définir une valeur de session par exemple comme suit:
Et puis dans le Profil de l'Utilisateur script a mis extrait de code suivant:
Ce code ci-dessus n'est, si, et seulement si
$_SESSION['status']
est fixé à"Active"
alors seulement il va aller au profil d'utilisateur , et ce de la clé de session sera mis à"Active"
uniquement si l'utilisateur est authentifié... [l'Esprit de la négation [' ! '] dans l'extrait de code ci-dessus]Probablement déconnexion code doit être comme suit:
Espère que cela aide...!!!
OriginalL'auteur Tushar Kshirsagar
Je pense que votre seul côté serveur option est d'interdire la mise en cache. Ce n'est pas un problème si vous êtes en utilisant un Javascript lourds application en tant que votre principale HTML peut n'être qu'une série de JS appels et les points de Vue sont ensuite générés à la volée. De cette façon, l'essentiel des données (JS MVC et le code de base) est mise en cache, mais la page en question, la demande n'est pas.
À ajouter aux commentaires collé ci-dessous, je voudrais suggérer l'ajout d'un petit appel AJAX au cours de la charge temps que les feux de même pour les pages mises en cache qui va à votre serveur et vérifie la session. Si la session n'est pas trouvé, il serait de rediriger l'utilisateur à l'écart. C'est infoclient code et non sécurisé fixer, bien sûr, mais ressemble plus belle.
Vous pourriez obtenir ce hors de votre conscience avec
Mais comme N. B. a dit
OriginalL'auteur Nenotlep
Vous pouvez insérer une condition/fonction sur chaque pages réservées, en vérifiant si les variable de session est activée ou non. De cette façon, vous pouvez imprimer les 2 versions de la page (un pour les utilisateurs valides, et une redirection vers la page de connexion)
OriginalL'auteur CosminO
En évitant à l'utilisateur de revenir en arrière n'est pas une bonne raison et surtout pas sécurisé du tout.
Si vous testez la session de l'utilisateur avant toute "admin" action faite sur le site, vous devriez être bien, même si l'utilisateur cliquait sur le bouton de retour, voit que la page en cache et tente quelque chose.
"Liens quelque chose" retournera un message d'erreur depuis la session n'est plus valide.
Au lieu de cela, vous devriez vous concentrer sur de très sécurisé back-office.
OriginalL'auteur Cyril N.
Voici un moyen facile et rapide de la solution.
Pour le formulaire de connexion tag ajouter
target="_blank"
qui affiche le contenu dans une fenêtre différente. Puis après déconnexion il suffit de fermer la fenêtre et le bouton retour de problème (navigateur Safari) est résolu.Même essayer d'utiliser l'histoire ne sera pas afficher la page et, au lieu de rediriger vers la page de connexion. C'est très bien pour les navigateurs Safari, mais pour d'autres, tels que Firefox, la
session_destroy();
prend soin de lui.OriginalL'auteur AntoBarn
les pages sur lesquelles vous avez exigé enregistrées, utilisez
setInterval
pour toutes les 1000 ms et vérifier la météo de l'utilisateur est connecté ou non à l'aide d'ajax. si la session de l'utilisateur n'est pas valide, rediriger lui à la page de connexion.OriginalL'auteur swapnil shahane
Noter que, bien que les utilisateurs ne peuvent pas changer quoi que ce soit après la réinitialisation des données de session et/ou de biscuits, ils peuvent encore voir à l'habitude de l'information accessible à un utilisateur connecté comme ils sont apparus lors de la dernière visite. Qui est causé par le navigateur de mise en cache de la page.
Vous devez être sûr ajouter l'en-tête sur chaque page accessible par un utilisateur connecté, qui dit au navigateur que les données sont sensibles, et ils ne devraient pas mettre en cache le script de résultat pour le bouton de retour. Il est important d'ajouter
Noter que ces autres éléments autres que le résultat immédiat de l'script sous cet en-tête, encore être mis en cache et vous pouvez en bénéficier. Voir qui vous progressivement la charge des parties de votre page et de tag de données sensibles et les principaux HTML avec cet en-tête.
Que la réponse indique, la suppression de la
logged_in
partie de$_SESSION
variable globale peut atteindre déconnecter, mais sachez que tout d'abord, vous n'avez pas besoin de détruire la session comme mentionné dans le PHPsession_destroy()
de la documentationEt la deuxième, tu ferais mieux de ne pas détruire la session, tout comme l'avertissement suivant sur la documentation explique.
Aussi,
unset()
est un paresseux fonction; ce qui signifie qu'il ne sera pas appliqué l'effet, jusqu'à la prochaine utilisation de la (partie de la) de la variable en question. Il est de bonne pratique de l'utilisation de l'assignation pour effet immédiat dans les cas délicats, pour la plupart des variables globales qui peuvent être utilisées dans des requêtes simultanées. Je vous suggère d'utiliser plutôt ceci:et de laisser le garbage collector recueille, en même temps, il n'est pas valide tant que l'utilisateur connecté.
Enfin, pour compléter la solution, Voici quelques fonctions:
OriginalL'auteur Cunning
Voici une solution simple que j'ai utilisé dans mon application.
Ajouter le code ci-dessous à l'intérieur de balise script dans le login de la page HTML (ou n'importe quel page de redirection après déconnexion)
Il permet de désactiver le bouton de retour. Vous ne serez pas en mesure de revenir en arrière en cliquant sur le bouton retour.
Remarque: testé sur Safari.
Salut Vijju, Javascript va chercher le titre de la page tout ce que vous avez donné dans la balise head. Vous pouvez le donner comme nulle et il fonctionnera comme requis dans la question ci-dessus.
J'ai editted la réponse et testé dans mon application. fonctionne très bien.
HII @Mashmoom . J'ai un autre doute que c'est quand j'ai ouvert la page de connexion et cliquez sur le bouton retour bouton, il ne veut pas retourner à la page principale. lors de la connexion de l'utilisateur sur le site alors que l'arrière bouton est désactivé.Le temps restant, il fonctionne
- Je l'obtenir. Tu veux dire, normalement, si une personne vient à la page de connexion puis de nouveau bouton a besoin de travailler, mais seulement après déconnexion il shd être désactivé ryt? Ce que je peux penser, c'est avoir une autre page de connexion qui ressemble à la même connexion. Mais seulement lors de la déconnexion elle doit venir à cette deuxième page de déconnexion qui a le script ci-dessus.
OriginalL'auteur Mashmoom