2012-03-12 24 views
4

私はGoogle App Engineアプリを呼び出すブックマークレットを作っています。 GAEアプリは、ブックマークレットに保存したいログイン情報を使用するので、ユーザーがブックマークレットを最初にクリックするとログイン情報が尋ねられますが、次回以降は自動的に提供されます。ブックマークレットのデータを保存

答えて

7

データを直接格納するブックマークレットの難しさは、データがcookieまたはlocalStoreにのみ格納できることです。どちらも、現在のページに属しています。つまり、次に別のページで使用すると再び機能しなくなります。また、アクセスしているページがデータにアクセスできることを意味します。これは一般にセキュリティにとって非常に悪いことです。

あなたの状況が一般的に扱われる基本的な2つの方法があります。 2つの主な方法は次のとおりです。

1.)使用されるアプリケーションは、ユーザーがクッキーでログインしたままにします。ログイン情報はCookieに保存されません。セッションIDのみです。これは、多くの一般的なWebサイトに戻ったときのように、再度ログインする必要はありません。非常に多くの場合、これらの種類のブックマークレットは、ユーザーの小さなポップアップを開き、そこにはアプリのページが含まれています。ユーザーがログインしていない場合は、まずログインするようにユーザーに求められます。ブックマークレットは、実際にサインインしているかどうかは分かりません。

2.)各ブックマークレットは、各ユーザーごとにカスタム作成されます。だから私のブックマークレットはあなたとは違うでしょう。違いは、私のログイン情報がコードに含まれ、コードにログイン情報が含まれることだけです。実際には、自分たちのパーソナライズされたブックマークレットを取得するには、まずアプリにログインする必要があります。

一般に、オプション1は、より良く、より簡単で安全です。

+1

3つ目のオプションがあります。ユーザーがログアウトした場合、レイジーサインアップを使用して新しいユーザーをバックグラウンドで作成します。ユーザーがサイトに戻ったときに、ログインしてデータを要求すると、そのデータは一時的に遅延ユーザーアカウントに保存されます。これは、セッションがタイムアウトするかクッキーがクリアされた場合、ユーザーは自分の活動を要求できなくなりますが、ユーザーはログインする必要はないという落とし穴があります。 –

+0

説明のおかげでオプション1はjavascriptの知識が不足しているにもかかわらず、私に最も適しています。 – quantme

+0

方法1の仕組みを理解するのに苦労しています。すでに別のページからログインしているとします。ブックマークレットはセッションIDを取得してページ自体にヒットすることができますか? (そして、どのページからでもサーバーxyzにアクセスした場合、ブラウザーはxyzについて知っているクッキーは、その要求と一緒に送信されません。 – Michael

0

私が正しく理解すれば、これはあなたを助けるかもしれません。 http://ajaxian.com/archives/whats-in-a-windowname

これは、JSのwindownameにデータを格納することを可能にします。最大2 MBのデータへのアクセスを許可します(クッキーよりもはるかに多くのデータを保持できます)。