我正在使用Angular 5.2和Auth0进行身份验证。登录由Auth0在托管登录页面上完成。该页面重定向到我的Angular应用程序中的回调页myapp.com/login-callback。
Auth0通过url中的哈希移交一些令牌。所以它重定向到
myapp.com/login-callback#access_token=123456789
现在出现问题..因为我将项目更改为Angular-CLI并将其从5.1更新为5.2 Angular对哈希片段进行编码,以便它成为
myapp.com/login-callback#access_token%3D123456789
=被编码为%3D
因此,auth0解析功能不再起作用。
如何防止Angular编码url的哈希片段?我使用默认路由策略(通过路径,而不是哈希)。
答案 0 :(得分:1)
我们刚刚使用Auth0遇到了同样的事情,虽然它没有禁用角度的“功能”,你可以抓取片段并将其传递给auth0的解析哈希函数。
import { ActivatedRoute } from '@angular/router';
import { WebAuth } from 'auth0-js';
//...
constructor(private route: ActivatedRoute, private auth0: WebAuth) {}
public handleAuth() {
//...
this.route.fragment.subscribe((hash) => {
// hash is decoded at this point
this.auth0.parseHash({hash}, (e, data) => {
// ...
答案 1 :(得分:0)
默认情况下,Angular会使用encodeURIComponent()对您的URL进行编码,但您可以通过编写自定义URI序列化程序来覆盖它。
检查此答案:angular 2 disable url encoding
基本上,您使用自己的自定义覆盖UriSeriaizer。