404 votes

Quelles sont les sessions? Comment travaillent-ils?

Je suis juste au début pour commencer à apprendre le développement d'application web, à l'aide de python. Je suis venue à travers les termes de "cookies" et "sessions". Je comprends cookies qu'ils stocker des informations dans une valeur clé de la paire sur le navigateur. Mais j'ai un peu de confusion concernant les sessions, une session de trop nous stocker des données dans un cookie sur le navigateur de l'utilisateur.

Par exemple - je me connecter à l'aide de username='itamecodes' et password='default'. Dans un tel cas, les données seront publiées sur le serveur qui est censé vérifier et de me connecter si authentifié. Cependant, pendant tout le processus, le serveur génère un ID de session qui sera stocké dans un cookie sur mon navigateur. Maintenant que le serveur stocke également cet ID de session dans son système de fichiers ou de données.

Mais basé sur l'ID de session, comment serait-il en mesure de connaître mon nom d'utilisateur lors de mon ultérieure traversée par le biais du site? Est-il stocker les données sur le serveur en tant que dict où la clé serait un ID de session et des détails comme l' username, email etc. les valeurs?

Je suis un peu perdue ici. Besoin d'aide.

492voto

Luke404 Points 1758

Dans de nombreux sites web dynamiques vous souhaitez stocker les données de l'utilisateur entre les requêtes HTTP (http étant apatrides et vous ne pouvez pas vous autrement associer une demande pour toute autre demande), mais vous ne voulez pas que les données soient maintenues côté client (dans le cookie, dans les paramètres d'URL (comme http://example.com/myPage?asd=lol&boo=no), et ainsi de suite...) parce que vous ne voulez pas le client de jouer avec les données sans passer par votre (côté serveur) du code.

La solution est de stocker des données côté serveur, donnez-lui un "id", et de laisser le client sait (et passer de retour à chaque requête http) id. Là vous allez, des séances de mise en œuvre.

Bien sûr il y a d'autres aspects à considérer, comme vous ne voulez pas les gens à pirater d'autres sessions, vous voulez que les sessions durent pas éternellement, mais à expiration, et ainsi de suite.

Dans votre exemple, l'id d'utilisateur (nom d'utilisateur ou un autre IDENTIFIANT unique de l'utilisateur de votre base de données) est stocké dans la session de données, de serveur-côté, après le succès de l'identification. Ensuite, à chaque requête HTTP que vous obtenez de la part du client, l'id de session (fourni par le client) vous permettra de la session correcte des données (stockées par le serveur) qui contient l'utilisateur authentifié id - de cette façon, votre code sera de savoir ce que l'utilisateur qu'il est en train de parler.

53voto

Tim Rourke Points 241

"Session" est le terme utilisé pour se référer à l'utilisateur d'un temps de navigation d'un site web. Il est destiné à représenter le temps entre leur première arrivée à une page du site jusqu'à l'arrêt de l'utilisation du site. Dans la pratique, il est impossible de savoir quand l'utilisateur se fait avec le site. Dans la plupart des serveurs il y a un délai d'attente qui s'achève automatiquement une session, sauf si une autre page est demandée par le même utilisateur.

La première fois qu'un utilisateur se connecte à un certain genre d'ID de session est créé (comment c'est fait dépend du logiciel de serveur web et le type d'authentification/identification que vous utilisez sur le site). Comme les cookies, ce n'est généralement pas envoyé dans l'URL de plus, parce que c'est un problème de sécurité. Au lieu de cela, il est stocké avec un tas d'autres trucs que, collectivement, est aussi appelé la session. Les variables de Session sont des cookies - ils sont des paires nom-valeur envoyée avec la demande d'une page, et est retourné dans la page à partir du serveur, mais leurs noms sont définis dans un standard du web.

Certaines variables de session sont passés comme des en-têtes HTTP. Ils sont transmis en arrière dans les coulisses de chaque page de parcourir de sorte qu'ils n'apparaissent pas dans le navigateur et de dire à tout le monde quelque chose qui peut être privé. Parmi eux, le USER_AGENT, ou le type de navigateur demande la page, le PARRAIN ou la page du lien vers la page demandée, etc. Un logiciel de serveur web ajoute leurs propres en-têtes ou de transfert des données spécifiques au logiciel serveur. Mais les standards sont assez bien documentée.

Espérons que cela aide.

25voto

eloone Points 754

J’ai voulu comprendre les sessions web aussi, maintenant, je comprends. J’ai fini par écrire mon propre wiki si c’est d’aucun secours : http://machinesaredigging.com/2013/10/29/how-does-a-web-session-work/

22voto

Artem Barger Points 18789

Ok, pas sûr de savoir comment cette question appartiennent. Mais pour être bref. HTTP est sans état protocole de connexion, d'où le serveur ne peut pas différencier entre les différentes connexions des différents utilisateurs. D'où vient cookie, une fois que le client se connecte première fois au serveur, le serveur a généré de nouvelles id de session, qui plus tard sera envoyé au client à la valeur du cookie. Et à partir de maintenant, cet id de session permettra d'identifier les clients de connexion, car à l'intérieur de chaque requête HTTP, il convient d'id de session à l'intérieur de cookies. Maintenant, pour chaque id de session, le serveur garde une structure de données, ce qui lui permet de stocker des données spécifiques à l'utilisateur, cette structure de données vous pouvez de façon abstraite session d'appel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X