2017-05-21 2 views
2

Est-il vrai que les appels au point de terminaison CouchDB _session semblent toujours renvoyer un code d'état HTTP 200, même si le cookie que je passe est absent ou erroné?Les appels à _session de CouchDB renvoient toujours 200

Le passage d'un mauvais biscuit ou aucun cookie dans mon semble toujours GET têtes de requête retour:

{ 
    "ok": true, 
    "userCtx": { 
    "name": null, 
    "roles": [] 
    }, 
    "info": { 
    "authentication_db": "_users", 
    "authentication_handlers": [ 
     "cookie", 
     "default" 
    ] 
    } 
} 

Lors du passage du cookie correct, je reçois une réponse légèrement différente:

{ 
    "ok": true, 
    "userCtx": { 
    "name": "jack", 
    "roles": [] 
    }, 
    "info": { 
    "authentication_db": "_users", 
    "authentication_handlers": [ 
     "cookie", 
     "default" 
    ], 
    "authenticated": "cookie" 
    } 
} 

Est-ce comportement standard? Si c'est le cas, sur quelle clé devrais-je compter pour supposer une authentification réussie? Devrait-il être res.userCtx.name ou res.info.authenticated?

+0

Avez-vous encore vérifié [la documentation] (http://docs.couchdb.org/fr/2.0.0/api/server/authn.html#get--_session)? –

+0

@DominicBarnes Cheers. J'ai vu cette page mais pour une raison quelconque j'ai dû passer la partie 'GET/session'. – shennan

+0

La documentation ne suggère pas qu'un 401 soit retourné pour un mauvais cookie ou pas de cookie du tout, mais cela ne suggère pas non plus qu'il renvoie toujours un 200 ou le raisonnement expliquant pourquoi. Je ne peux pas penser à une seule raison pour laquelle quelqu'un aurait besoin de ce point de terminaison pour toujours retourner un objet userCtx même lorsque la session est invalide. – Ravenstine

Répondre

0

Cela semble être un comportement standard, bien qu'il ne soit pas explicitement indiqué dans la documentation. Toutefois, vous pouvez demander à CouchDB de renvoyer une réponse 401 en définissant basic=true dans la requête comme suit: /_session?basic=true.

Cela semble indiquer que c'est utile pour l'authentification de base, mais cela fonctionne également avec un utilisateur authentifié par un cookie. (testé avec CouchDB 2.0.0)