2015-10-16 30 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解决方案。

相关问题