Question

Je pense que dans presque tous les cas, les données de préférences utilisateur peuvent être stockées dans un cookie avec des résultats (presque) aussi bons que lorsque l’API de profil utilisateur est utilisée. L'utilisation de cookies (pour les utilisateurs authentifiés) semble présenter l'inconvénient qu'un cookie peut être supprimé ou expiré, auquel cas les données relatives aux préférences de l'utilisateur seront perdues. Pour les utilisateurs anonymes, si les données de préférences doivent être conservées d'une session à l'autre, un cookie devra être utilisé même lorsque les profils utilisateur sont utilisés.

Quels sont donc les principaux avantages / inconvénients de l’utilisation de profils d’utilisateur ou de cookies pour le stockage des préférences de l’utilisateur?

Était-ce utile?

La solution

Un autre inconvénient de la conservation de toutes les données de préférence dans les cookies est que toutes ces données devront être envoyées dans chaque demande du client et dans toute réponse du serveur chaque fois que des modifications sont apportées aux données. Bien que cela puisse sembler être un point mineur de l’âge du haut débit, il reste néanmoins une surcharge supplémentaire. Utiliser l'API Profils signifie que les données sont conservées sur le serveur et que seul un cookie d'identification de session doit être envoyé par le navigateur.

De même, comme vous l'avez dit, si les cookies sont supprimés pour les utilisateurs anonymes, les préférences utilisateur contenues dans la base de données Profils ne seront plus accessibles. Toutefois, ce ne sera pas le cas des utilisateurs enregistrés de votre site Web. S'ils retirent leurs cookies, le serveur pourra toujours récupérer leurs préférences utilisateur lors de leur prochaine connexion.

Autres conseils

L'un des avantages de l'enregistrement sur un site est qu'il mémorise mes préférences. Si vous stockez ces informations dans un cookie sur ma machine plutôt que sur votre serveur, lorsque je me connecte à votre site à partir d'un autre ordinateur, Je dois réitérer toutes mes préférences - du point de vue de la convivialité, c’est assez mauvais.

Pour un utilisateur anonyme, stocker les préférences dans un cookie peut sembler assez judicieux - vous ne savez pas qui elles sont, ou si elles reviendront, et comme vous le dites, vous ne pouvez pas travailler d'une session à l'autre. Ensuite, il serait préférable de stocker une sorte de jeton dans le cookie et de le mapper sur un magasin de préférences sur le serveur.

En outre, j’ai remarqué que différents navigateurs appliquaient différentes méthodes de gestion des cookies. Par exemple, IE peut désormais recevoir 50 cookies d’un domaine (jusqu’à l’origine des 20), mais le nombre total de 4096 octets pour l'ensemble de la collection de cookies (et les précédents) - les autres navigateurs prendront en charge 4 Ko par cookie plutôt que par domaine.

La longueur maximale des cookies est limitée et ils utilisent une mise en œuvre indépendante de votre volonté (après tout, ils constituent une fonctionnalité du navigateur de vos visiteurs). Personnellement, je n'aime pas utiliser des implémentations tierces inconnues sur lesquelles je n'ai aucun contrôle et, si nécessaire, j'essaie de l'utiliser de la manière la plus simple possible.

Ainsi, d'où je viens, je stockais toujours les données de l'utilisateur sur le serveur et transmettais simplement un cookie pointant vers cette information.

En plus de ne pas faire confiance au navigateur avec un volume potentiellement important de données (qui peuvent être perdues, mal stockées ou pas du tout dépendant du navigateur mais aussi, par exemple, de certaines applications antivirus ou autre), cela a plusieurs conséquences. autres avantages:

  • Vous cachez votre implémentation à l'utilisateur: si vous stockez les données dans le cookie, elles sont visibles par quiconque et peuvent être analysées ou modifiées à volonté. Cela peut même amener les utilisateurs à modifier les cookies à leur guise et ainsi vous forcer à garder des renseignements personnels sans doute vouloir vous en débarrasser simplement parce que certains utilisateurs dépendent de votre implémentation à tout moment.
  • Les cookies étant stockés en texte brut sur des machines partagées, tout le monde ne peut plus voir facilement tous les paramètres définis par l'utilisateur précédent ni les modifier à volonté.

Mais le point le plus important reste la déconnexion des implémentations de navigateur qui ne fonctionnent pas vraiment (le simple cas de l'utilisation de petits jetons est le cas d'utilisation courant et testé)

N'oubliez pas que l'un des principaux inconvénients de l'utilisation des cookies est qu'ils peuvent être copiés. Il est donc dangereux de stocker des informations d'authentification sur ceux-ci.

Je ne connais pas bien l'API de profil utilisateur, mais j'imagine qu'elle stocke les informations sur le serveur (?). Si tel est le cas, vous pourriez avoir un problème si vous avez plusieurs utilisateurs.

Globalement, la meilleure solution consiste peut-être à utiliser le profil utilisateur s'il garantit la persistance des informations.

N'oubliez pas qu'il est possible d'écrire un profilProvider qui conserve les données de l'utilisateur dans un cookie. Vous pouvez ainsi bénéficier du meilleur des deux mondes si vous déterminez que l'état que vous souhaitez conserver convient aux cookies (taille, sécurité, etc.). .

En fait, il n’est pas nécessaire de conserver les données de préférence dans les cookies pour les utilisateurs anonymes lors de l’utilisation du fournisseur de profil ASP.NET. Stockez simplement l'ID utilisateur actuel (qui est une chaîne liée à la session qui a l'air horrible) dans un cookie. Cet identifiant deviendra l'ID utilisateur précédent lors de visites ultérieures. Vous pourrez alors récupérer les informations de l'ancien profil et les migrer vers le profil actuel, ou même les authentifier en tant que l'ancien profil anonyme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top