2017-07-31 15 views
0

私はmeteor.jsを初めて使用しています。私の質問がコミュニティの基準に従って適切でない場合は申し訳ありません。無効なセッションログアウト時の流星ログアウト

まあ、私はそれに簡単なアプリケーションを作成しようとしていると、ユーザーの非アクティブ後にタイムアウトの問題を見つけました。

私は、「無効なセッション流星パッケージ」を使用して、指定されていない時間が経過すると自動的にタイムアウトします。それはユーザーをログオフするが、Meteor.user()の設定を解除しておらず、ユーザーがログアウトしていることを知ることができ、「Login」ページのルートを呼び出して再ログインする。

例:無効なセッションは、30秒間使用しないとユーザーをログオフしてから、 "Meteor.user()"の戻り値を確認しました。古いセッションがタイムアウトした場合、それはIDと他の詳細で完全なユーザーオブジェクトを実行しています。

古いセッションがタイムアウトしてログイン画面が表示されたときに、ユーザーを強制的にログアウトしたいだけです。

私は2日間インターネット上で検索していますが、これを行う方法に関する解決策は見つかりませんでした。最後に、質問を掲載しました。

+1

古いセッションパッケージを正しくインストール/使用していないようです。ユーザーがログオフされたことをどのように知っていますか? 'Meteor.user()'がまだ値を持っていれば、ログインしているように見えるでしょう。また、ログインしているユーザのために 'Meteor.user()'の代わりに 'Meteor.userId()'をチェックしてください。特にユーザオブジェクトが大きい場合には、完全なユーザオブジェクトをネットワーク上に公開するのに必要な時間のために、後者の前に存在する可能性がある。 –

+0

まあ、「ユーザーログオフ」とは、流星のようなセッションではなくログアウトしているということです。失効したセッションは、loginTokenのusersテーブルフィールドを空に設定/更新し、プロジェクトは役に立たなくなります。 私はMeteor.userId()もチェックしましたが、成功しませんでした –

答えて

0

私は解決策を見つけました。誰かが必要なら、ここに投稿するように働いています。

私は古いパッケージコードに掘られ、そのclient.jsに私は何の活動はjQueryのイベントの面で検出されない場合、私は単純に必要なログアウトを呼び出してはいけない。この

Meteor.setInterval(function() { 
if (Meteor.userId()) { 

    if(activityDetected){ 
     Meteor.call('heartbeat'); 
     activityDetected = false; 
    } else { 
     //This is the wanted behavior 
     Meteor.logout(); 
    } 
} 

}, heartbeatInterval); 

でコードを置き換えMeteor.user()やMeteor.userId()などが気になるだけです。単にログアウトして、実装したLogin Screenルートに移動します。

関連する問題