Javascript Mozilla';s Persona(BrowserID):域&x2B;子域登录

Javascript Mozilla';s Persona(BrowserID):域&x2B;子域登录,javascript,html,mozilla,browserid,Javascript,Html,Mozilla,Browserid,下面的问题 我有一个网站: example.com 但也有一些附带的网站,比如: data.example.com help.example.com 它们都由同一个flask应用程序运行。 现在,我希望用户能够点击登录任何一个网站,并登录到所有这些网站。 目前有两个post请求可从以下网址获得: example.com/api/login example.com/api/logout 现在的问题是,当从example.com登录时,一切都运转良好。我甚至登录了子域本身。谢谢你,Moz

下面的问题

我有一个网站:

  • example.com
但也有一些附带的网站,比如:

  • data.example.com
  • help.example.com
它们都由同一个flask应用程序运行。 现在,我希望用户能够点击登录任何一个网站,并登录到所有这些网站。 目前有两个post请求可从以下网址获得:

  • example.com/api/login
  • example.com/api/logout
现在的问题是,当从example.com登录时,一切都运转良好。我甚至登录了子域本身。谢谢你,Mozilla。但是,当从其他子域之一登录时,由于域不匹配,我得到了一个失败响应,这对我来说非常有意义,因为它存在安全风险

我知道两种解决方案:

  • 打开子域时,请首先重定向到真实域,并让用户再次单击登录
  • 为每个子域本身创建
    /api/login
    /api/logout URL
    这里的问题是用户需要在其登录的url处注销
  • 当然,方法2更适合用户

    现在真正的问题是,是否有任何方法可以从这些子域登录,而无需每个域的
    login/logout
    URL


    如果我需要澄清,请告诉我。提前感谢。

    一个想法是让
    data.example.com
    help.example.com
    有一个带有
    example.com
    登录按钮的iframe,而不是这两个子域拥有自己的登录按钮


    这样,当用户转到这两个子域时,他们最终会单击顶级域(
    example.com
    )的登录按钮,并设置一个cookie,该cookie将在这三个子域上运行。

    我认为您正在查找的正是当前所在的域。还有一些讨论。看起来它很快就会进入大师级课程。

    这是个不错的主意,我没想过。现在我要用我的方法2,虽然我不喜欢100%。(我能够解决我之前遇到的问题)我明天会检查你的想法,并让你知道它是如何工作的。