私は、REST インターフェイスを Web サイトおよび iphone/Android/etc デバイスに公開する php/mysql バックエンドを構築する初期段階にいます。
同じアカウントを使用する複数のデバイスのセッションを処理するための「標準」または「ベスト プラクティス」が何であるかはよくわかりません。
これがどのように機能するかについての私の現在の考えは次のとおりです。
今のところ、MySQL を使用してセッションを保存します。次のようなセッション テーブルを使用します。
id、session_id (ハッシュ)、user_id (int)、created (タイムスタンプ)、expire (タイムスタンプ)、device (列挙型)
ユーザーが iOS アプリまたは Android アプリを介してログインすると、今後の API 呼び出しで使用するために、成功の json でセッション トークンが返されます。API呼び出しを行うWebサイトと同じです。
セキュリティ上の理由から、ユーザーが再ログインした場合は、セッション トークンを再生成して上書きする必要がありますが、そのデバイスの session_id に対してのみです。
また、セッションの有効期限を示す有効期限列もあるので、必要に応じて、2 週間で有効期限が切れ、CRON ジョブによって定期的にクリーンアップされるセッションを作成できます。
これは私には合理的なアプローチのように思えますが、ユーザーが iPhone と iPad を使用している場合、または同じアカウントを使用して複数の Android デバイスを使用している場合は問題があります。ユーザーが一方でログインすると、他方がログアウトされます。
別の iPhone からログインしても、instagram がセッションを無効にしないことに気付きました。
ただし、ユーザーが再ログインしたときにセッショントークンを上書きしたり、ユーザーがiPhoneからログインするたびにセッションテーブルにセッション行を追加したりしない限り、その動作を再現できないと思いますか?
異なるデバイス間でセッションを処理する標準的な方法は何ですか?