2013-08-22 68 views
2

我有我的Meteor应用程序服务于多个域。该应用程序的功能对于所有网站都是相同的,但主机名决定我呈现哪些模板。为什么ROOT_URL是bundle部署所需的环境变量?

当我在生产环境中运行我的Meteor应用程序时,一切正常,ROOT_URL只指向其中一个域。所以我想知道,为什么这是一个必需的环境变量而不是在Meteor.absoluteUrl()中使用? (虽然我个人认为它可能在其他地方使用,但我个人不会使用它)

回答

4

在生产环境中使用此操作是在OAuth回调期间使用的。如果您通过Facebook/Twitter/Google或其他第三方登录,它会回拨您的域名,您的浏览器必须正确路由此地址。

在OAuth中,为了安全起见,使用的域必须匹配给另一端的域。另一种方式是让OAuth登录提供程序像Facebook一样知道要重定向到哪里。

所以这通过ROOT_URL传递。例如对于登录时将facebook重定向回Meteor.absoluteUrl('_oauth/facebook?close')

+0

很好的答案,是有道理的。我想我需要考虑使用'Meteor.absoluteUrl()''ROOT_URL'覆盖选项与OAuth结合使用,以使其在所有域中都能正常工作?我已经挖掘了一下OAuth包,并找不到它的实现。 –

+0

没关系,在每个帐户包lib和客户端实现中找到它。感谢您的帮助 –

+1

此外,在产品上ROOT_URL用于为电子邮件确认模板等内容提供URL路径的前缀 –