我有一个应用程序,用户已经注册。当用户点击我的应用程序中的望远镜按钮时,他们将被转移到另一台服务器上,在该服务器上我正在运行我自己的望远镜应用程序分支。
在进入telescope后,我希望能够自动使用与我的应用程序中相同的帐户信息登录用户。如何做到这一点?我可以调整两个Meteor应用程序的代码,因为我自己运行它们。
发布于 2014-09-22 17:15:06
您需要将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");
});然后,您可以创建一个url:
<a href="{{telescopeUrl}}">Telescope App</a>最后,你需要用望远镜截获这些链接并登录,你可以用iron router创建一条路由。
同样,在/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>我从来没有亲自尝试过,但希望它能有所帮助。
https://stackoverflow.com/questions/25962623
复制相似问题