l'autre jour, je discutais avec un collègue et il est sorti en disant que l'utilisation de la session de l'utilisateur dans une application Web était tout simplement fausse. J'ai répondu que cela pouvait être faux selon les informations que vous stockez, sinon pourquoi un service de session Web devrait-il même être fourni par Microsoft (nous parlions d'ASP.NET).
Il m'a répondu, encore une fois, que même dans les États membres, ils pouvaient facilement me répondre que c'était une mauvaise conception. Et qu'il pourrait me montrer des livres blancs le démontrant.
Malheureusement, je n'ai plus la possibilité de contacter ce type, mais j'aimerais vraiment en savoir plus sur son point de vue. Quelqu'un a-t-il des informations / points de vue à ce sujet ici?
la source
Réponses:
Je ne pense pas qu'il voulait autant dire «mauvaise conception» que «mauvaise pratique». D'une manière générale, une application Web doit être aussi apatride que possible. Même si, par exemple, vous pouvez avoir besoin de connaître les informations utilisateur afin d'autoriser l'affichage des pages, ces informations peuvent être enregistrées sur la machine client sous la forme d'un cookie et le serveur valide simplement les informations utilisateur à chaque fois.
Ce serait idéal, mais vous ne pouvez pas toujours compter sur le client pour pouvoir enregistrer les cookies. En outre, cela implique de valider l'utilisateur de manière sans état, ce qui implique potentiellement d'interroger des informations dans la base de données pour une simple demande de page. Souvent, il est simplement plus simple d'enregistrer ces informations dans la session.
Cependant, une fois que vous avez franchi le Rubicon, de nombreux programmeurs sont tentés de sauvegarder non seulement les informations d'authentification dans la session, mais aussi bien d'autres choses. Il s'agit d'un anti-modèle et tend à rendre votre application Web fortement dépendante de l'état, ce qui était précisément ce qui devait être évité en premier lieu.
Certains programmeurs s'appuieraient sur une technologie comme Spring (si vous utilisez Java) pour démêler ce qui serait autrement un gâchis de dépendances, mais je dirais que cela facilite la création de dépendances plutôt que leur élimination. De telles technologies devraient faciliter votre développement et non pas rendre votre anti-pattern moins problématique.
Par conséquent, une bonne règle de base est que si vous pouvez l'écrire sans état, c'est probablement une meilleure idée de le faire ou vous risquez de tomber dans ce piège. Évidemment, vous allez rencontrer des situations dans lesquelles cela est nécessaire, mais en règle générale, vous ne devez enregistrer que des informations qui seraient autrement difficiles à réacquérir.
la source
but you can't always count on the client being able to save cookies
puis AFAIK, vous ne pouvez pas non plus compter sur les sessions. Les cookies ne sont-ils pas utilisés pour identifier quelle session appartient à quel utilisateur, ou existe-t-il d'autres méthodes et c'est tout simplement la plus courante?Je pense que vous confondez deux sujets différents: 1) les sessions et 2) le modèle de page des formulaires Web asp.net
Une session Web est nécessaire pour authentifier un utilisateur. Idéalement, une session ne devrait être utilisée qu'à cette fin. Vous ne devez pas stocker les données utilisateur dans une session (que ce soit sur le serveur, dans un cookie ou comme asp.net/webforms le fait: dans la page elle-même). Personne ne devrait dire qu'une session Web est mauvaise, mais plutôt stocker des données utilisateurdans une session est une mauvaise pratique. Les raisons de ne pas stocker les données utilisateur sur le serveur incluent les mêmes raisons pour éviter les variables globales. Le stockage des données utilisateur dans des cookies ou dans la page peut introduire des problèmes de sécurité. L'utilisation du modèle de page d'asp.net n'adhère pas non plus à la nature apatride du Web. Vous pouvez effectuer une recherche pour en savoir plus sur les raisons pour lesquelles les formulaires Web sont une mauvaise conception. Les sessions, d'autre part, sont une partie nécessaire des applications Web.
la source
Les contrôles et le stockage de l'état de session sur une page sont essentiellement un hack. C'est le cas de MS - nécessaire car ils voulaient être en mesure de fournir un environnement de développement où vous pourriez concevoir des pages comme vous le pouvez dans les environnements Winform.
Les MS ont eux-mêmes évolué vers l'architecture MVC (dernière version - MVC 4) qui est plus un retour à ce que le protocole devrait réellement être - sans état.
Il y a des situations où le stockage de l'état est toujours pratique mais il faut comprendre que c'est l'exception plutôt que la règle.
la source