3

セッションがデフォルトのphpセッションストレージに保存されている場合、ユーザーセッションを削除する方法はありますか?

たとえば、私はウェブサイトの管理者で、ログインしているユーザーを禁止したいと考えています。ユーザー認証ステータスはセッションに保存されます。データベースからユーザー行を削除していますが、ユーザーはまだログに記録されており、すべての必要な認証情報もセッションに保存されています。セッションをドロップ/変更する必要があります。

可能な方法:

  • リクエストごとにDBからユーザーの行をロード
  • ユーザーのセッションを削除し、リクエストごとにこのファイルの存在を確認するように言って、ファイルを作成します
  • /dev/shm にファイルを作成します (非常に高速なチェック)。ただし、ファイルは再起動時に削除されます
  • セッションをDBに保存します(私のプロジェクトのオーバーヘッド)
  • セッションをnosql(redis、memcachedb)に保存します(私のプロジェクトのオーバーヘッド)

ユーザーのセッションをデータベースまたはnosqlデータストレージに保存する以外のエレガントな方法はありますか?

4

1 に答える 1

0

これを行う方法を知っている唯一の方法は、セッション レコードを削除することです。ファイルの場合は、セッション ファイルを削除します。セッションが DB または memcache に保存されている場合は、そこで削除します。難しい問題は、セッション ID を見つける方法と、ユーザーにセッション ID が存在するかどうかです。

メールまたはユーザー ID を保存するファイルの場合は、そのファイルを探すことができます。DB 内のセッション ストレージは、簡単にクエリできる必要があります。memcache でどのように行うかわかりません。

リクエストごとにセッションを再生成しない場合は、セッションの作成時に session_id を常にユーザーに固有のものに設定できます。SSL を使用しない場合は注意してください。一意のキーがuse は簡単に推測できます (user_id のように)。その後、ユーザーがログインしたときに、ユーザーのセッション ID をユーザー レコードと共に DB に一度格納することができます。

于 2012-11-16T19:40:19.570 に答える