0

現在、devise gem を認証に使用して Rails アプリを作成しています。

現在、アプリにはクライアント側のタイムアウト機能のみが実装されていますが、これは最終的な解決策として適切ではないと思います。1 つの例として、ユーザーがコンピューターをスリープ状態にする場合はカバーしていないためです。

だから私はデバイスにタイムアウトモジュールを実装したかったのですが、私が直面しているいくつかの問題があります。この問題は、サーバー側のタイムアウトにより、ユーザーがサインイン ページにリダイレクトされる前に別のページに移動する必要があるためです。また、ユーザーが UI でモーダルを開くと、私のアプリには多くの対話があり、AJAX 呼び出しがトリガーされます (サーバー側でタイムアウトした場合は失敗します)。

ここに私が考えた2つのアプローチがありますが、私はそれらを良い解決策とは思わないので、誰かがこれらのアプローチのいずれかに基づいて構築するか、別の方向に私を向けるのを助けることができます:

1.) 私の AJAX 要求で、エラー コールバックが 401 Unauthorized 応答を返した場合にページを更新するか、ログイン ページに移動するようにユーザーに指示する「エラー」コールバック内にハンドラーを追加します。

短所: アプリにはこれらの ajax リクエストが多数あるため、反復コードが多くなり、保守が難しいと思います。

2.) クリック ハンドラーを本文に追加し、それがトリガーされるたびに、バックエンドにリクエストを送信して、ユーザーがまだログインしているかどうかを検証します。ログインしていない場合は、ユーザーをログイン ページにリダイレクトします。

短所: パフォーマンスの問題

アドバイスをいただければ幸いです。ありがとう。

4

2 に答える 2

1

これはサーバー サイトから追加できます。

:expire_after: 120.minute

あなたのinitializers/session_store.rbで、以下の例。

Tastebook::Application.config.session_store :cookie_store, 
                            key: '_tastebook_app_session',
                            expire_after: 120.minute
于 2013-09-15T15:11:26.840 に答える