ブラウザーの場合、(構成可能な) 10 分間はスライディング ウィンドウです。CouchDB がリクエストに応答するたびに、Cookie が新しい値に更新され、ログインが効果的に更新されます。
クライアントの場合、ヘッダーが表示されたときに Cookie 値をリセットすることを忘れないでくださいSet-Cookie
(または、自分のクライアントに渡す場合)。
たとえば、短いタイムアウト (30 秒) があります。
$ curl http://admin:admin@localhost:5984/_config/couch_httpd_auth/timeout
"30"
次に私は:
- ログイン
- 少々お待ちください
- タイムアウトの前に、Cookie を使用してセッションを確認してください
- タイムアウトを待つ
- タイムアウト後に、Cookie を使用してセッションを再度確認します
- (手早く) ステップ 3 で設定した新しい Cookie CouchDB を使用してセッションを確認します。
最初の確認には{"name":"me"}
(ログインしています) があることに注意してください。2 つ目は{"name":null}
(ログアウトしています)。しかし、3番目は{"name":"me"}
再びあります(更新されたCookieを使用しているため、まだログインしています).
$ curl -X POST -i localhost:5984/_session -d name=me -d password=secret
HTTP/1.1 200 OK
Set-Cookie: AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc; Version=1; Path=/; HttpOnly
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Sat, 28 Apr 2012 01:28:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 35
Cache-Control: must-revalidate
{"ok":true,"name":"me","roles":[]}
$ sleep 20
$ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc
HTTP/1.1 200 OK
Set-Cookie: AuthSession=bWU6NEY5QjQ3QkM6WonDdsAdO8p7QUlLWCZQXVAfcvU; Version=1; Path=/; HttpOnly
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Sat, 28 Apr 2012 01:28:28 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 165
Cache-Control: must-revalidate
{"ok":true,"userCtx":{"name":"me","roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"],"authenticated":"cookie"}}
$ sleep 10
$ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QTA6Ao6zetUZUxkno37ULd2qdRRjmsc
HTTP/1.1 200 OK
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Sat, 28 Apr 2012 01:28:43 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 140
Cache-Control: must-revalidate
{"ok":true,"userCtx":{"name":null,"roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"]}}
$ curl -i localhost:5984/_session -H Cookie:AuthSession=bWU6NEY5QjQ3QkM6WonDdsAdO8p7QUlLWCZQXVAfcvU
HTTP/1.1 200 OK
Set-Cookie: AuthSession=bWU6NEY5QjQ3RDA69pqrNVd-ClZ7_v4SkcghdZRRhCs; Version=1; Path=/; HttpOnly
Server: CouchDB/1.2.0 (Erlang OTP/R15B)
Date: Sat, 28 Apr 2012 01:28:48 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 165
Cache-Control: must-revalidate
{"ok":true,"userCtx":{"name":"me","roles":[]},"info":{"authentication_db":"_users","authentication_handlers":["oauth","cookie","default"],"authenticated":"cookie"}}
CouchDB 1.2.0 以降では、 に設定できるよう_config/couch_httpd_auth/allow_persistent_cookies
に"true"
なり、見やすくなりました。Cookie には明らかな「Expires」フラグがあり、常に現在の時刻にタイムアウト値を加えた値に設定されていることがわかります。