Tout d'abord, vous devez vous demander : "J'ai vraiment besoin de cookies ?" :
Les cookies étaient autrefois utilisés pour le stockage général côté client. Bien que cela soit légitime lorsqu'ils étaient le seul moyen de stocker des données sur le client, il il est recommandé aujourd'hui de préférer les API de stockage modernes . Les cookies sont envoyés à chaque demande, ils peuvent donc détériorer les performances (en particulier pour les connexions de données mobiles). Les API modernes pour le stockage client sont les suivantes Web storage API (localStorage et sessionStorage) et IndexedDB. ( Source : MDN )
Donc, si vous ne l'avez pas encore fait, vous voudrez peut-être lire l'article sur les API de stockage Web à la place.
Si vous souhaitez continuer à utiliser des cookies, veuillez poursuivre votre lecture.
J'ai essayé ngx-cookie-service
et ça n'a pas marché pour moi. J'ai rencontré problème sur problème, j'ai fini par en discuter sur github, j'ai essayé de mettre à jour les paquets. Il m'a fallu environ une journée pour me rendre compte que ce dont j'avais besoin ne devait pas être si compliqué, après tout, obtenir/régler des cookies n'est qu'un truc natif de javascript.
Je n'avais plus de temps à perdre, et j'ai écrit ce simple CookieService
moi-même. Et je voulais juste le partager avec d'autres développeurs désespérés. :)
Un simple CookieService
J'ai créé ce Gist qui est une alternative légère à ngx-cookie-service.
Configuration et utilisation
Bien sûr, vous devez l'enregistrer dans votre app.module.ts
fichier. Ajoutez-le à la liste de vos fournisseurs :
providers: [FooService, BarService, CookieService]
Ensuite, utilisez-le dans vos composants, par exemple comme suit :
private _sessionId: string;
constructor(private cookieService: CookieService) {
this._sessionId = cookieService.get("sessionId");
}
public set sessionId(value: string) {
this._sessionId = value;
this.cookieService.set("sessionId", value);
}
Notez que vous pouvez utiliser les outils de débogage pour vérifier que le cookie est effectivement défini, et pour vérifier qu'il est présent dans les requêtes HTTP suivantes. (captures d'écran de Chrome, mais Firefox et Edge ont des aperçus similaires)
1 votes
Je suis un peu perplexe quant à la raison pour laquelle cette question a été fermée. C'est une question valide et succincte à laquelle de nombreuses personnes ont répondu par des votes positifs. Les modérateurs ont parfois l'impression d'être des tireurs d'élite à qui on n'a pas dit que la guerre était finie. Descendez juste des arbres les gars
0 votes
@PeterNixey Ce n'est pas parce que beaucoup de personnes ont voté/répondu que la question elle-même est bonne. Le fait de laisser des questions comme celle-ci ouvertes envoie un message aux nouveaux utilisateurs, à savoir que les questions non ciblées du type "Comment faire X", sans recherche personnelle ni tentative de solution, sont acceptables et conformes au sujet. Beaucoup de gens dépassent les limites de vitesse, mais cela ne rend pas la vitesse acceptable.
0 votes
@remy c'est raisonnable mais je ne vois pas en quoi la question est en dehors des limites de vitesse. Elle est incroyablement spécifique - elle fait référence à un utilitaire particulier dans AngularJS et demande quel est l'équivalent dans Angular 6. Ma question initiale était légèrement désinvolte, mais je ne vois vraiment pas en quoi elle n'est pas ciblée.
0 votes
@PeterNixey Je comprends votre point de vue selon lequel "non focalisé" n'est pas la bonne raison de fermeture, et je suis d'accord (c'est en effet spécifique). Cependant, étant donné que nous (les utilisateurs normaux) ne pouvons pas modifier la raison de fermeture raison pour la fermeture, j'ai encore voté pour qu'elle reste fermée, pour les raisons ci-dessus. (Personnellement, je choisirais probablement "nécessite des détails de débogage", car il semble qu'aucun effort n'ait été fait pour résoudre le problème avant de le demander). Mais je pense que votre point soulevé est certainement valable.