Faire des séances de vraiment violent de la Détente?

Est à l'aide de sessions dans une API RESTful vraiment violation de la Détente? J'ai vu beaucoup d'avis allant à l'une ou l'autre direction, mais je ne suis pas convaincu que les sessions sont Agité. De mon point de vue:

  • l'authentification n'est pas interdite pour la Détente (sinon il y aurait peu d'utilité dans les services RESTful)
  • l'authentification se fait par l'envoi d'un jeton d'authentification dans la demande, généralement de l'en-tête
  • ce jeton d'authentification doit être obtenue en quelque sorte et peut être révoquée, auquel cas il doit être renouvelé
  • le jeton d'authentification doit être validé par le serveur (sinon il ne serait pas d'authentification)

Alors, comment faire des sessions de violer cette?

  • côté client, les sessions sont réalisées à l'aide des cookies
  • les cookies sont tout simplement un extra-tête HTTP
  • un cookie de session peut être obtenu et révoquée à tout moment
  • les cookies de session peut avoir une durée de vie infinie temps en cas de besoin
  • l'id de session (jeton d'authentification) est validé côté serveur

En tant que tel, pour le client, un cookie de session est exactement le même que tout autre en-tête HTTP de base du mécanisme d'authentification, sauf qu'il utilise la Cookie en-tête de la place de la Authorization ou certains autres propriétaires d'en-tête. Si il n'y a pas de session attachés à la valeur du cookie côté serveur, pourquoi cela ferait-il une différence? Du côté serveur, la mise en œuvre n'a pas besoin de préoccupation au client tant que le serveur se comporte Reposant. En tant que tel, les cookies en eux-mêmes ne doivent pas faire une API Agité, et les séances sont simplement des cookies pour le client.

Sont mes hypothèses de mal? Ce qui rend les cookies de session Agité?

  • J'ai couvert qui est exactement la question ici: stackoverflow.com/questions/1296421/rest-complex-applications/...
  • Ajouter à cela, si vous êtes seulement en utilisant la session d'authentification, alors pourquoi ne pas utiliser les en-têtes? Si non, et que vous utilisez la session pour les autres de l'état de la conversation, alors que c'est violer les Apatrides contrainte de REPOS.
  • Merci. Il semble que vous parlez de la sessions pour stocker temporairement les données transmises par les internautes, alors que dans mon cas, je suis juste en train de parler d'eux comme un détail de l'implémentation de l'authentification. Cela peut-il être où le désaccord vient d'où?
  • Hartung: pas de différence significative du protocole de point de vue. Filtre doit également être conservé sur le côté serveur et le filtre code doit être toujours transmis. 100% le même que pour les séances.
  • Mon seul point est que si vous allez utiliser un en-tête pour représenter un jeton d'authentification, HTTP fournit un au-delà d'un générique de cookie. Alors, pourquoi ne pas l'utiliser et de conserver la gratuit de la sémantique que vous obtenez avec elle (quelqu'un de voir la charge utile peut voir qu'il y a un jeton d'authentification, est attribué à).
  • Il ne suffit pas de protocole, c'est à propos de la sémantique aussi.
  • Donc, tout le débat est simplement un problème de syntaxe? 🙂 Si le Authorization en-tête se sont comportés exactement le même comme un cookie de session, il serait parfaitement Paisibles? Je suis d'accord que les témoins se sentent un peu "sale", mais il n'y a pas de différence technique.
  • Hartung: toujours pas de voir la différence. Vous avez donné le nom différent à la même technique. Nous pouvons le nom de ce filtre, mais c'est encore une session.
  • Certes, mais alors pourquoi ne pas faire vos propres en-têtes, ou de détourner certains autres d'en-tête pour le jeton d'authentification. Utiliser le X-XYZZY en-tête. C'est juste la syntaxe de droit? Les en-têtes de transmettre de l'information. L'en-tête d'Autorisation est plus de "l'auto-documentation" que votre cookie est, parce que "tout le monde" savoir ce que l'en-tête d'Authentification est pour. Si ils voient juste JSESSIONID (ou autre), ils ne peuvent pas faire toutes les hypothèses, ou pire, de faire le mauvais hypothèses (quoi d'autre est-il stocker dans la session, quoi d'autre est-ce utilisé pour, etc.). Avez-vous le nom de vos variables dans votre code Aq12hsg? Non, bien sûr que non. La même chose s'applique ici.
  • Non, c'est un Filtre. Un Filtre a différentes sémantiques qu'une Session. Cycle de vie différent, les différents flux de travail, des objectifs différents.
  • Hartung: ne Peut pas avoir l'idée alors :-S à Partir de votre post, je l'ai trouvé tout à fait similaire.
  • Cette opinion basée question est une violation des règles. Beaucoup de bonnes questions générer un certain degré d'opinion basée sur les experts de l'expérience, mais les réponses à cette question ont tendance à être presque entièrement basé sur des opinions, plutôt que des faits, des références, ou des compétences spécifiques. Si cette question peut être reformulé de manière à adapter les règles dans le centre d'aide, veuillez modifier la question.

InformationsquelleAutor deceze | 2011-05-20