使用Auth0

时间:2016-11-27 01:37:34

标签: angular auth0

我有一个配置了以下回调网址的Auth0客户端:

http://localhost:4200

我可以登录。

问题是当我导航到我的应用中的某个网址时:http://localhost:4200/places。这是发生的事情:

  1. 我导航到http://localhost:4200/places
  2. Angular将我(正确)重定向到http://localhost:4200
  3. 我尝试登录
  4. 我从Auth0收到错误,说“网址”http://localhost:4200/places“不在允许的回调网址列表中”。
  5. Auth0是正确的,http://localhost:4200/places不在我允许的回调网址列表中 - 我不希望它。我不希望列出我的用户可能被踢回登录屏幕的任何URL。

    因为某些原因,正在发生的事情正在告诉Auth0引用网址是http://localhost:4200/places而不是http://localhost:4200,即使我尝试http://localhost:4200实际上是地址栏中的网址登录。

    我意识到我可以将http://localhost:4200指定为redirectUrl并“修复”问题,但是我必须使redirectUrl在开发,登台和制作方面有所不同。看起来这似乎不是人们通常解决这个问题的方式。

    如何让Auth0不要尝试将我重定向到/places

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并用史莱克的上述建议(与我不同的施莱克)解决了这个问题。但是,我不得不使用window.top.location.origin而不是window.top.location.hostname。对我来说,window.top.location.origin等同于Auth0中客户端设置中的Allowed Callback URL值。

这是我的代码:

    let stateOptions =
    {
        "auth0_authorize": this.authNonce,
        "return_url": router.url
    };

    let options =
        {
            closable: false,
            languageDictionary:
            {
                emailInputPlaceholder: "something@youremail.com",
                title: "Log me in"
            },
            auth:
            {
                redirectUrl: window.top.location.origin,
                redirect: true,
                responseType: 'token',
                params:
                {
                    state: btoa(JSON.stringify(stateOptions)),
                    scope: 'openid user_id name nickname email picture'
                }
            }
        };

    this.lock = new Auth0Lock('[your-auth0-clientid]', '[your-auth0-domain]', options);

答案 1 :(得分:1)

这个问题也困扰了我很久。最后,我在Auth0的配置页面中找到了它。

enter image description here

这样做非常有趣。我不知道为什么Auth0使用它来保存回调网址。实际上,我们始终在代码中设置RedirectURL。这与谷歌授权完全不同。无论如何,问题解决了。

顺便说一句,我一开始就谷歌这个错误,但我在Auth0配置页面找到了这个解决方案。顶部有一个视频教程。

我希望这会有所帮助。