我想连接到远程服务器并将其用于登录。这并不是特别难。
Remote = DDP.connect('http://somesite.com');
Accounts.connection = Remote;
Meteor.users = new Mongo.Collection('users', Remote);
但是,当我在本地代码上调用meteor方法时(有多个服务器,但只有一个登录),它无法识别用户。
Meteor.methods({
'start': function () {
if (!this.userId) {
// ...
} else {
throw new Meteor.Error(401, 'Unauthorized');
}
}
});
尽管已登录,但这始终会导致错误。
如何将本地用户设置为与远程用户相同的用户?
答案 0 :(得分:1)
让我们重命名以下内容:
Remote
=> Login Server
local
=> Default Server
这是您调用方法我认为您可以登录Default Server
更好地服务,然后将登录尝试转发给Login Server
。
这样,当您使用Default Server
上的Login Server
时,您将在Meteor.Methods
上登录(如果Default Server
确认凭据有效)。
Accounts.validateLoginAttempt允许您在LoginAttempt的回调中运行任意代码,允许您将验证从Default Server
传递到Login 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功能的最佳方法,但我尝试首先使用HTTP.post与Login Server
进行通信(并建议使用restivus登录服务器,它将为您提供开箱即用的身份验证路由。)
我刚看到这个包:admithub:shared-auth
它需要两个流星应用程序之间的共享数据库。
除此之外,您可能需要研究完整的SSO解决方案。