2015-10-16 42 views
0

我想連接到遠程服務器並將其用於登錄。這並不是特別困難。在遠程和本地連接上使用一個用戶

Remote = DDP.connect('http://somesite.com'); 
Accounts.connection = Remote; 
Meteor.users = new Mongo.Collection('users', Remote); 

然而,當我呼籲我的本地代碼流星方法(有多個服務器,但是一次登錄),它不能識別用戶。

Meteor.methods({ 
    'start': function() { 
    if (!this.userId) { 
     // ... 
    } else { 
     throw new Meteor.Error(401, 'Unauthorized'); 
    } 
    } 
}); 

這總是導致一個錯誤,儘管被登錄。

如何將我的本地用戶設置爲相同的用戶遠程用戶?

回答

1

讓我們重命名以下:

  • Remote =>Login Server
  • local =>Default Server這就是你所說的方法

我認爲你是通過登錄Default Server更好的服務,然後將登錄嘗試中繼到Login Server
這樣,當您使用Default Server上的Meteor.Methods時,您將登錄Default Server(如果Login Server確認憑據有效)。

Accounts.validateLoginAttempt允許你在一個LoginAttempt運行在回調任意代碼,允許您從Default ServerLogin Server通過驗證:

if (Meteor.isServer) { 
    Accounts.validateLoginAttempt(function(attempt) { 
    //psuedocode block 
    var res = LoginServer_Login(attempt.methodArguements) 
    if (res === true) return true; // Login Success 
    else    return false; // Login Failed 
    }); 
} 

我不知道的最好的方式來實現LoginServer_Login FUNC,儘管我會嘗試使用HTTP.post首先與Login Server進行通信(並且建議在登錄服務器上使用restivus,它會爲您提供開箱驗證路由)。

我剛剛遇到這個包:admithub:shared-auth 它雖然需要在兩個流星應用程序之間共享數據庫。 除此之外,您可能需要查看完整的SSO解決方案。

相關問題