我有一个用户已注册的应用。当用户点击我的应用程序中的望远镜按钮时,它们将被转移到另一台服务器,我在其中运行我自己的望远镜应用程序分支。
在使用望远镜时,我希望能够使用与我的应用程序相同的帐户信息自动登录用户。如何才能做到这一点?我可以调整Meteor应用程序的代码,因为我自己运行它们。
答案 0 :(得分:0)
您需要将Telescope应用程序设置为使用其他应用程序的帐户数据库。
您可以通过更改Accounts.connection
以使用其他Meteor应用程序(您的主应用程序)来实现此目的
将此行添加到/server/lib
目录中某处的望远镜应用程序中:
var myOtherAppDDP = DDP.connect("http://your-other-app.com");
Accounts.connection = myOtherAppDDP;
这样,您的meteor应用程序的帐户部分的DDP连接将使用您的主应用程序数据库。
接下来,您需要将登录令牌转移到其他应用程序。为此,您需要与用户当前登录令牌建立特殊链接:
Template.registerHelper("telescopeUrl", function() {
return "https://your-telescope-app.com/?auto-login?token=" + localStorage.getItem("Meteor.loginToken") + "&userid=" + localStorage.getItem("Meteor.userId");
});
然后你可以创建一个网址:
<a href="{{telescopeUrl}}">Telescope App</a>
最后,你需要望远镜拦截这些链接并登录,你可以用铁路由器为它创建一条路线。
再次,在/client/lib
中创建一个包含以下内容的文件:
somefile.js
Router.map(function() {
this.route("loggin_in", {
onBeforeAction: function() {
var token = this.params("token");
var userId = this.params("userid");
localStorage.setItem("Meteor.loginToken", token);
localStorage.setItem("Meteor.userId", userId);
Tracker.flush();
window.location.href="/";
}
});
});
somefile.html
<template name="logging_in">
<h3>Logging you in</h3>
</template>
我从未亲自尝试过,但希望它有所帮助。