web-dev-qa-db-ja.com

JavaScriptでセッションCookieを読み取る方法は?

ユーザーがログインしているかどうかをJavaScriptで検出しようとしています。何らかの理由で、使用時にdrupalセッションCookieが表示されません。

alert(document.cookie);

「Drupal.tableDrag.showWeight = 0」および「has_js = 1」Cookieを表示します。

Cookieツールを使用すると、SESS ... Cookieが設定されていることがわかります。

更新:

ブラウザのキャッシュの問題を修正しようとしています。Varnishが「cache-control max-age」ヘッダーを30分に設定すると、ブラウザがページをキャッシュします。ユーザーがログインし、ブラウザーに既にキャッシュされているリンクをクリックすると、ユーザーは再びログアウトされたように見えます。

DrupalセッションCookieをJavascriptから読み取って、ユーザーがログインしているかどうかを確認できた場合は、そのページをリロードできます。

1
uwe

テーマがやや標準的な場合は、本文に「ログイン済み」または「ログインなし」のクラスがあるかどうかを確認し、それからキーオフする必要があります。例えば、

if ($('body').hasClass('not-logged-in')) {
  // do whatever you want for anon users
} else {
  // do whatever you want for logged in users
}

またはすべてjQueryにある場合:

$('body').hasClass('not-logged-in').doWhatEverHere();

コメントによる追加の編集:)

drupalはcookieでhttpOnlyを使用しているようです:

https://www.owasp.org/index.php/HTTPOnly

したがって、クライアントからアクセスすることはできません。ですから、ログイン時に自分のCookieを設定し、ログアウト時に削除してそれを探すことを検討することをお勧めしますが、それが原因でビル・ザ・キャットを騒がせています:)

2
Jimajamma