3

これらの原則に基づいて構築された永続的なログインアプリケーションを構築しました(From:http: //jaspan.com/improved_persistent_login_cookie_best_practice

  1. ユーザーがRememberMeをオンにして正常にログインすると、標準のセッション管理Cookieに加えてログインCookieが発行されます。[2]
  2. ログインCookieには、ユーザーのユーザー名、シリーズID、およびトークンが含まれています。系列とトークンは、適切に大きなスペースからの推測できない乱数です​​。3つすべてがデータベーステーブルに一緒に保存されます。
  3. ログインしていないユーザーがサイトにアクセスしてログインCookieを提示すると、ユーザー名、シリーズ、およびトークンがデータベースで検索されます。
  4. トリプレットが存在する場合、ユーザーは認証されたと見なされます。使用されたトークンはデータベースから削除されます。新しいトークンが生成され、ユーザー名と同じシリーズIDでデータベースに保存され、3つすべてを含む新しいログインCookieがユーザーに発行されます。
  5. ユーザー名とシリーズが存在するがトークンが一致しない場合、盗難が想定されます。ユーザーは強い言葉で警告を受け取り、ユーザーが記憶しているセッションはすべて削除されます。
  6. ユーザー名とシリーズが存在しない場合、ログインCookieは無視されます。

最初の認証が成功した後、新しいトークンを再発行することを理解しています。しかし、その後、認証が必要な他のページでも、その永続的なCookieを引き続きチェックして、新しいトークンを再発行しますか?

または、最初の認証が成功した後、ユーザーにログイン済みのマークを付け、その時点からセッションによってのみ認証し、現在のセッションの有効期限が切れた後にユーザーがサイトにアクセスしようとしたときのために、最初に再発行されたCookieを保存しますか(つまり、閉じたブラウザなど)?

4

2 に答える 2

0

私は 2 番目のオプションに投票します。何よりも、認証 Cookie を継続的に更新すると、パフォーマンスが低下します。(小さいですが、まだ不要です)。ログインに成功したら、Cookie を書き込みます。ユーザーがサイトにアクセスしたら、セッション値のみを使用します。

于 2012-09-25T19:32:07.137 に答える
0

ユーザーが現在のセッション Cookie なしでサイトにアクセスしようとした場合にのみ、ログイン Cookie を確認します。それが私が原則 3 を解釈する方法です。

ログインしていないユーザーがサイトにアクセスしてログイン Cookie を提示すると、ユーザー名、シリーズ、およびトークンがデータベースで検索されます。

(私のものを強調してください。)

また、論理的に考えると、ページ読み込みのたびにログイン Cookie を確認して再発行するのであれば、セッション Cookie とログイン Cookie の両方を使用しても意味がありません。

于 2012-09-25T19:32:18.353 に答える