Следующий параметр в CouchDB Session API? - PullRequest
4 голосов
/ 19 июля 2011

В Couchapp я хотел бы иметь форму входа, которая работает без Javascript.

На вики-странице об API сеанса говорится, что можно предоставить следующий параметр для _session, который будет перенаправлен после успешной или неудачной аутентификации.

Звучит великолепно, и я бы хотел перенаправить на функцию показа, которая затем может проверять учетные данные пользователя и отображать что-то соответственно.

Я пытался использовать форму:

<form action="/_session" method="POST">
  <input type="text" name="name">
  <input type="password" name="password">
  <input type="hidden" name="next" value="/somewhere">
  <input type="submit">
</form>

а также использование curl:

curl -X POST http://localhost:5984/_session -d 'name=foo&password=bar&next=/somewhere'

но безуспешно: я продолжаю получать код 200 (ОК), если мои учетные данные верны, и код 401 (Несанкционированный), если они не верны, но я никогда не получаю ожидаемый 302 (Перенаправление).

Эта функция пропала (я использую Couchdb 1.1) или я делаю это неправильно?

Если эта функция больше не существует, у вас есть альтернатива?

1 Ответ

2 голосов
/ 19 июля 2011

После просмотра исходного кода похоже, что эта функция была реализована в v1.1.0.

См. следующую реализацию параметра в исходном коде CouchDB.

Параметр поддерживается только как строка запроса, а не как отправка поля формы.Таким образом, если вы POST до /_session?next=/somewhere с данными формы в теле POST, это будет работать.

curl -i https://example.iriscouch.com/_session?next=/stuff -d 'name=me&password=secret'
HTTP/1.1 302 Moved Temporarily
Set-Cookie: AuthSession=[cookie value]; Version=1; Path=/; HttpOnly
Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
Location: http://example.iriscouch.com/stuff
Date: Tue, 19 Jul 2011 01:07:52 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 52
Cache-Control: must-revalidate

{"ok":true,"name":"me","roles":["whoever"]}
...