簡體   English   中英

如何在Angular 2 Meteor中從服務器端檢測並注銷空閑用戶?

[英]How to detect and logout idle user from server side in Angular 2 Meteor?

我是Angular 2 Meteor的新手。 我正在實施一個項目,當他關閉窗戶時我必須注銷用戶; 再次,當他打開應用程序時,他應該看到登錄頁面。

我搜索了互聯網,但沒有找到任何關於Angular 2流星的東西。

https://github.com/mizzao/meteor-user-status
我找到了這個,但我不知道如何在注冊用戶的Angular 2案例中使用它。 在Angular 2 Meteor中將此代碼放在服務器端的位置以及如何注銷用戶。

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

有人可以幫忙嗎?

我在我的一個項目中實現了這個,你可以使用mizzao / meteor-user-status包從角度2流星的服務器端注銷。 這是你必須要做的

步驟1) 首先安裝此包

meteor add mizzao:user-status

步驟2) 安裝完成后,您的用戶收集表會顯示一些帶有基本帳戶信息的新條目。 現在你的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": "jhon@gmail.com",
        "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]);
           }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM