从redirect angular 5获取查询参数

时间:2018-05-17 05:50:20

标签: javascript angular typescript auth0 auth0-lock

我的问题是我使用auth0作为我的身份验证服务,现在当用户登录并通过身份验证后,它会被重定向回我的回调网址,然后决定在哪里发送用户我的问题是当你得到从auth0重定向回你的回调网址,url字符串中有queryParams,如此...

http://localhost:4200/account/login/callback#access_token="dsadsadsadsa dasdsaa"仅作为示例,但是在一瞬间,查询字符串被删除,其左侧为http://localhost:4200现在我试图使用此方法获取查询Params

this.activatedRoute.queryParams.subscribe(params => {
    console.log(params);
});

现在这应该可以工作,但是console.log每次都是一个空对象,我认为是因为那个url发生了变化..

有没有什么方法可以在删除之前抓取查询参数?

修改

基本上发生的事情是我接受了身份验证然后被重定向到

localhost:4200/account/login/callback?acessToken="dasdasdaefssves"

但随后路线变为

localhost:4200/account/login/callback

activatedRoute函数有机会运行之前没有查询参数!

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

请注意,您的重定向网址为http://localhost:4200/account/login/callback?access_token="dsadsadsadsa dasdsaa"

但角度将其路由到localhost:4200/account/callback

注意

您没有在angular中定义 / account / login / callback 路由。但您改为使用 / account / callback 路线。 Angular尝试解析路由并将其重定向到 / account / callback ,而不使用queryParams。

以角度定义路线,您的问题将得到解决。

答案 1 :(得分:-1)

我没有得到你完整的问题,但我理解的很多。您想从URL获取查询参数。

从URL获取查询参数您需要这样做。

 constructor(private activatedRoute: ActivatedRoute){}

这是您从URL获取所有查询参数的方法。

this.activatedRoute.queryParamMap
                .map((params: Params) => params.params)
                .subscribe( (params) => {
                     if(params && params['access_token']){
                        console.log(params['access_token']);
                     }
                 });