2017-01-14 6 views
3

私はAngular 2 Meteorを初めて使用しています。私は彼がウィンドウを閉じるときにユーザーをログアウトする必要があるプロジェクトを実装しています。また、彼がアプリを開くと、ログインページが表示されるはずです。Angular 2 Meteorのサーバー側からアイドル状態のユーザーを検出してログアウトする方法は?

私はインターネットを検索しましたが、角度2の流星については何も見つかりませんでした。

https://github.com/mizzao/meteor-user-status 私はこれを見つけましたが、ログアウトユーザーのために角2の場合の使用方法はわかりません。このコードをAngular 2 Meteorのサーバー側に配置する方法と、ユーザーをログアウトする方法。

Meteor.users.find({ "status.online": true }).observe({ 
    added: function(id) { 
    }, 
    removed: function(id) { 
    } 
}); 

誰かが助けることができますか?

答えて

1

これを私のプロジェクトの1つに実装しました。あなたは、mizzao/meteor-user-statusパッケージを使って、角度2の流星のサーバー側からログアウトすることができます。これははあなたと一緒にいくつかの新しいエントリこのユーザーのコレクションテーブルショーをインストールした後、すべてこのパッケージをインストール

meteor add mizzao:user-status 

ステップ2)の最初)あなたは

ステップ1を実行するために持っているものです基本的なアカウント情報今あなたのJSONファイルは、単に置くログインページの

{ 
    "_id": "uxuhCgmCg6wkK795a", 
    "createdAt": { 
     "$date": "2016-09-30T05:54:07.414Z" 
    }, 
    "services": { 
     "password": { 
      "bcrypt": "$2a$10$AxCqCcNsZzdtHSxB9ap9t.KY9kjV2E/U0woF4SFPRBqUD8Bj0XpuO" 
     }, 
     "resume": { 
      "loginTokens": [{ 
       "when": { 
        "$date": "2017-01-09T05:50:17.784Z" 
       }, 
       "hashedToken": "XHpxCKS/kUALKyXCANDBHrJXRV9LAsmCBOOWwmUhAaU=" 
      }] 
     } 
    }, 
    "username": "jhon", 
    "emails": [{ 
     "address": "[email protected]", 
     "verified": false 
    }], 
    "status": { 
     "online": true, 
     "lastLogin": { 
      "date": { 
       "$date": "2017-01-09T05:50:19.055Z" 
      }, 
      "ipAddr": "127.0.0.1", 
      "userAgent": "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/49.0.2623.108 Chrome/49.0.2623.108 Safari/537.36" 
     }, 
     "idle": false 
    }, 
    "resume": { 
     "loginTokens": [] 
    } 
} 

ステップ3)ユーザーステータスコードサーバー側の

  import { Meteor } from 'meteor/meteor'; 

      Meteor.startup(() => { 
       // load initial Parties 
       Meteor.users.find({ 
        "status.online": true 
       }).observe({ 
        added: function(id: any) { 
         // id just came online 
         console.log("--------- New User Login ---------"); 
         console.log("user " + id.username + " (" + id._id + ") is online now"); 

        }, 
        removed: function(id: any) { 
         // id just went offline 
         console.log("----------- User idle --------------"); 
         console.log("user " + id.username + " (" + id._id + ") is gone offline"); 
         // ** use this mongodb query to remove user who go offline from server side 
         Meteor.users.update({_id: id._id }, {$set: {"services.resume.loginTokens": []} }, { multi: true }); 
        } 
       }); 
      }); 

ステップ4)クライアント側のいくつかの余分なキーを持っていますこのコード

ngOnInit() { 
     if (Meteor.user()) { <-- make sure you use Meteor.user() only . if you use Meteor.userId then it can create some issue because it is stored on localhost but Meteor.user() everytime calls server for user data. choice is yours. 
      this._router.navigate([//your routename]); 
      } 
     } 
+0

ありがとうございます。出来た :) – himanshu

関連する問題