Meteor:如何使用我的应用程序的用户帐户信息登录Telescope应用程序的分支?

时间:2014-09-21 18:46:03

标签: meteor

我有一个用户已注册的应用。当用户点击我的应用程序中的望远镜按钮时,它们将被转移到另一台服务器,我在其中运行我自己的望远镜应用程序分支。

在使用望远镜时,我希望能够使用与我的应用程序相同的帐户信息自动登录用户。如何才能做到这一点?我可以调整Meteor应用程序的代码,因为我自己运行它们。

1 个答案:

答案 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>

我从未亲自尝试过,但希望它有所帮助。