Je veux apprendre tous les détails de l'authentification des applications Web. J'ai donc décidé d'écrire une bibliothèque d'authentification CodeIgniter à partir de zéro. Maintenant, je dois prendre une décision de conception sur la façon de déterminer si un utilisateur est connecté.Comment vérifier si l'utilisateur se connecte dans une application Web?
Fondamentalement, après la saisie de l'utilisateur nom d'utilisateur & paire de mots de passe. Un cookie est défini pour cette session, les navigations suivantes dans l'application Web ne nécessitent pas de nom d'utilisateur & password. Le côté serveur vérifiera si le cookie de session est valide pour déterminer si l'utilisateur actuel est connecté. La question est: comment déterminer si le cookie est un cookie valide émis du côté serveur?
Je peux illustrer le moyen le plus simple est d'avoir la valeur de cookie stockée dans l'état de la session ainsi. Pour chaque requête HTTP, comparez la valeur du cookie et celle de la session du serveur. (Puisque la bibliothèque de session CodeIgniter stocke les variables de session dans les cookies, elle ne s'applique pas sans un certain ajustement.) Cette méthode nécessite un stockage côté serveur.
Pour une application Web volumineuse déployée dans plusieurs centres de données. Il est possible que l'utilisateur saisisse le mot de passe & lors de la navigation dans un centre de données, alors qu'il accède plus tard à l'application Web dans un autre centre de données. Le comportement attendu est que l'utilisateur vient d'entrer le nom d'utilisateur & mot de passe une fois. Par conséquent, tous les centres de données devraient pouvoir accéder à l'état de la session. Cela est possible sans objet même le statut de la session est stocké dans un stockage externe tel qu'une base de données.
J'ai essayé Google. Je me connecte à Google avec un proxy asiatique qui est censé me diriger vers des datacenters en Asie. Ensuite, je passe à un proxy nord-américain qui devrait me diriger vers les centres de données en Amérique du Nord. Il reconnaît ma connexion sans demander à nouveau le nom d'utilisateur et le mot de passe. Donc, y a-t-il un moyen de déterminer si l'utilisateur se connecte sans statut de session côté serveur?
Voulez-vous dire que Google aura un stockage de session accessible à tous pour tous les centres de données? Le côté serveur vérifie généralement si l'utilisateur est connecté; et décidez s'il faut poursuivre l'action de l'utilisateur ou rediriger vers la page de connexion. Dans la vraie vie, je suppose que les options utilisateur seront également chargées dans la session. –
@Morgan bien il a décidé que l'utilisateur est connecté. Quelle est la prochaine? Que voulez-vous dire par "session"? N'est-ce pas la même base de données mondiale? –
Je suppose que les données de session pour les utilisateurs connectés ont généralement des informations par session (par exemple, l'heure de connexion) et certaines informations fréquemment utilisées (par exemple la préférence de l'utilisateur). Ces informations devraient être accessibles globalement aussi. –