Authentication Auth0和angular2:如何设置callbackURL并捕获令牌?
我正在尝试使用and(2.0.0-rc.6)实现无密码身份验证,使用and 表单正常显示,身份验证电子邮件使用以下代码发送:Authentication Auth0和angular2:如何设置callbackURL并捕获令牌?,authentication,angular,angular2-routing,auth0,Authentication,Angular,Angular2 Routing,Auth0,我正在尝试使用and(2.0.0-rc.6)实现无密码身份验证,使用and 表单正常显示,身份验证电子邮件使用以下代码发送: this.lock.magiclink({ callbackURL:"http://localhost:3000/#/sandbox" }); 问题发生在我单击电子邮件中的神奇链接之后: 即使魔术链接的重定向uri看起来是正确的(重定向uri=http%3A%2F%2Flocalhost%3A3000%2F%23%2Fsandbox),它也会被忽略 相
this.lock.magiclink({
callbackURL:"http://localhost:3000/#/sandbox"
});
问题发生在我单击电子邮件中的神奇链接之后:
- 即使魔术链接的重定向uri看起来是正确的(重定向uri=http%3A%2F%2Flocalhost%3A3000%2F%23%2Fsandbox),它也会被忽略
- 相反,在成功登录(签入Auth0日志)后,地址栏中的url(简短地): (注意#而不是预期的问号)
- 然后(大约一秒钟后)它重定向到:
我的问题是:
经过多次努力,我找到了一个解决办法 TL;博士使用PathLocationStrategy(HTML 5 pushState),而不是“哈希URL”样式。
在Auth0控制台(客户端设置)中的
允许的注销URL
和允许的来源
下面,指定了:
请注意,在验证这些URL时,查询字符串和哈希信息不会被考虑在内
所以我想它可能也适用于允许的回调URL
,即使它没有指定
这可以解释为什么callbackURL
被忽略
诀窍是去掉URL中的散列(#);哈希是中的默认
LocationStrategy
为此,在app.modules.ts
中,将RouterModule.forRoot(路由,{useHash:true})
更改为RouterModule.forRoot(路由,{useHash:false})
虽然它本应该可以工作,但我遇到了另一个问题:当重新加载页面时,它会显示一个空白页面,其中包含以下消息:
<% if (webpackConfig.htmlElements.headTags) { %>
在Auth0客户端设置允许的回调URL中,插入:
http://localhost:3000/sandbox
和保存
现在,在成功登录后(当我单击电子邮件中的神奇链接时),它将打开一个浏览器窗口,其中包含以下URL:
http://localhost:3000/sandbox#access_token=xxxxxxxxxxx&id_token=yyyyyyyyyyy&token_type=Bearer
它应该呆在那里。捕获和保存令牌现在应该很简单
http://localhost:3000/sandbox#access_token=xxxxxxxxxxx&id_token=yyyyyyyyyyy&token_type=Bearer