問題タブ [usersession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
35 参照

ios - アプリをアンインストールして再インストールした後、foursquare のような iOS アプリはどのようにユーザー セッションを回復しますか?

アプリをアンインストールして再インストールした後、Foursquare や Quiz up などのアプリがユーザー セッションを自動的に回復することに気付きました。

これに関するヒントは大歓迎です。

ありがとう

0 投票する
2 に答える
616 参照

php - How not to expire user session cakephp

I'm developing an application in CakePHP for monitoring and I do not want my user session to expire because user needs to needs to see the control panel frequently even if he is not using the application.

I have found many ways but I do not know which is the best one...

What do you recommend?

Thanks a lot in advance. Best regards.

0 投票する
4 に答える
2757 参照

docker - シングル ページ アプリケーション (SPA) のゼロ ダウンタイム/Blue-Green デプロイ

昨日、チームと一緒に、シングル ページ アプリケーションをサポートするためにゼロ ダウンタイム デプロイを使用する可能性について話し合っていました。

それについて話し合っているうちに、1 つのエッジ ケースを特定しました。ユーザーがブラウザにページをロードすると、ページをリロードするまでメモリから削除できません。つまり、ユーザーがページをロードして Web サイトで作業を開始した場合 (たとえば、私が今行っているように長い記事を入力し始めた場合)、ページをリロードするまで、更新されたバージョンを受け取ることができません。

ユーザーのブラウザに古いバージョンのアプリケーションが表示されるという事実は無視できますが、以下に示す 2 つの点があります。

  1. スパを提供するために使用される HTTP Api に重大な変更を導入した場合、ユーザーは記事を保存できなくなったり (データ損失!)、他のバックエンド関連のアクションを実行したときに他のエラーを受け取ったりする可能性があります。
  2. ユーザーが SPA をリロードせずに新しいページに移動すると、次のページのテンプレートまたは外部の古いコンテナーと互換性のないコントロールのテンプレートを受け取ることができます。マークアップやアプリケーション ロジックの破損につながる可能性があります。
  3. ユーザーが記事を入力している途中である可能性があるため、ユーザーに再ログインを強制することはできません。これは単に悪い UX です。

これらすべての点を考慮に入れると、次の解決策を提案できます。

  1. ユーザー 1 は、SPA の v1 をブラウザーにロードします。
  2. 認証トークンとともに、バージョン情報がブラウザーに送信されます (たとえば、JWT を使用)。
  3. アプリケーションの v2 バージョンをデプロイしたいと考えています。v2 バージョンをスピンアップしますが、v1 を無効にしません。
  4. ユーザー 2 は、SPA の v2 を自分のブラウザーに読み込みます
  5. ユーザー 1 は、SPA の次のページに移動します。ロード バランサーはトークンのバージョン情報をチェックし、ユーザー 1 のトラフィックを v1 サーバーにルーティングします。
  6. ユーザー 2 は、同じ方法で v2 にルーティングされます。
  7. ユーザー 1 がアプリをログアウトし、ブラウザーを閉じます。
  8. ユーザー 1 は再度ログインします。今回は v2 を受け取ります。
  9. v1 アプリケーションが長時間トラフィックを受信しないと、破棄されます。

ただし、このアプローチでは、2 つ以上の複数のバージョンを有効にすることができます (たとえば、ユーザーが 1 日か 2 日オンラインでいる場合)。これは、最後のユーザーがログアウトするまで、データベースを新しいスキーマに移行できないことを意味します (Facebook などのサイトでどのように機能するかをイメージしてください)。複数のバージョンを使用することは問題ではありませんが、Docker や Rancher などのツールを使用すると簡単に行うことができます。

また、ステップ 7 では、ユーザーはページをリロードするか、ブラウザーを閉じる必要があります。そうしないと、ユーザーはまだ v1 で作業しているため、次のバージョンに強制することはできません。

私が持っている質問は、シングル ページ アプリケーションのゼロ ダウンタイム/Blue-Green デプロイを行うためにどのようなアプローチを使用するかということです。

特に既存の「ブルー」クライアント アプリケーションに関して、トラフィックを「グリーン」バージョンに切り替えるときに、アプリケーションの「ブルー」バージョンの有効期間をどのように管理しますか。

これらの問題を解決しましたか、他の解決策を知っていますか?