web-dev-qa-db-fra.com

Comment se déconnecter lors de l'utilisation de l'authentification .htaccess (et .htpasswd)?

Duplicata possible:
déconnexion de l'authentification HTTP via PHP

Salut

J'ai une fonctionnalité sur mon site Web protégée à l'aide de .htaccess et .htpasswd. Lorsque les utilisateurs tentent d'y accéder, ils reçoivent une invite pour entrer les détails. Ils entrent leurs coordonnées et entrent et peuvent voir des trucs, etc. Tout fonctionne bien.

Ma question est de savoir comment créer une fonctionnalité logout pour ce type d'authentification. Je sais qu'ils peuvent fermer la fenêtre du navigateur pour "Déconnexion". Mais ce n'est pas idéal. Que me suggéreriez-vous?

Merci.

27
TigerTiger

Les navigateurs ne prennent généralement pas en charge cela, voir Comment puis-je me déconnecter?

Depuis que les navigateurs ont commencé à implémenter l'authentification de base, les administrateurs de sites Web ont voulu savoir comment laisser l'utilisateur se déconnecter. Étant donné que le navigateur met en cache le nom d'utilisateur et le mot de passe avec le domaine d'authentification, comme décrit précédemment dans ce didacticiel, il ne s'agit pas d'une fonction de la configuration du serveur, mais il s'agit de faire en sorte que le navigateur oublie les informations d'identification, de sorte que la prochaine fois que le est demandée, le nom d'utilisateur et le mot de passe doivent être à nouveau fournis. Il existe de nombreuses situations dans lesquelles cela est souhaitable, par exemple lorsque vous utilisez un navigateur dans un lieu public et que vous ne souhaitez pas laisser le navigateur connecté, afin que la prochaine personne puisse accéder à votre compte bancaire.

Cependant, bien que ce soit peut-être la question la plus fréquemment posée sur l'authentification de base, aucun des principaux fabricants de navigateurs n'a jusqu'à présent considéré que c'était une fonctionnalité souhaitable à intégrer à leurs produits.

Par conséquent, la réponse à cette question est que vous ne pouvez pas. Désolé.

Il existe des extensions de navigateur qui vous permettent d'effacer l'authentification HTTP pour un site. Pour Firefox, l'extension WebDeveloper (qui est de toute façon l'une de mes extensions préférées) offre cette fonctionnalité. Le menu pour cela est Miscellaneous/Clear Private Data/HTTP Authentication.

31
Ludwig Weinzierl

Testé sur Firefox et Chrome . Ce que vous pouvez faire est d'envoyer l'utilisateur à http: // logout: [email protected] . Cela remplacera leur nom d'utilisateur/mot de passe actuel par déconnexion/déconnexion (il pourrait s'agir de n'importe quelle combinaison utilisateur/passe invalide) et comme ils ont maintenant le mauvais nom d'utilisateur/mot de passe, ils devront se reconnecter pour accéder au site.

Sur opera cela ne fonctionne pas, car vous pouvez avoir plusieurs noms d'utilisateur/mots de passe en même temps. Cela ne fonctionnait pas non plus sur IE, car IE ne semble pas prendre en charge http: // nom d'utilisateur: mot de [email protected] URL.

25
Marius

J'ai rencontré ce problème il y a plusieurs années. Il est extrêmement frustrant de découvrir qu'il y a un problème que tout le monde rencontre et que personne ne semble vouloir résoudre de manière générale.

Comme indiqué dans Fonctionnalité de déconnexion inadéquate dans l'authentification HTTP Je pense que la réponse est de modifier le RFC pour autoriser les délais d'expiration et prendre en charge un bouton de déconnexion. La suggestion supplémentaire de l'auteur selon laquelle le serveur pourrait envoyer un en-tête de "déconnexion" éliminerait en fait le besoin de tout support de l'agent utilisateur client puisque les sites Web pourraient simplement inclure un lien sur une page Web vers une URL qui renvoie le code de réponse et/ou l'en-tête nécessaires pour invalider la session en cours.

2
Grant Wagner

Il IS sorte de déconnexion possible. Vous devez implémenter la page de déconnexion, qui renverra HTTP 401, jusqu'à ce que l'utilisateur entre les mauvaises informations de connexion, puis redirige ailleurs. Le navigateur se souvient des dernières informations de connexion accepté et remplace donc la connexion correcte.

Mais c'est un peu inutilisable, car il a besoin de la coopération de l'utilisateur.

1
nothrow