如何在Angular 2中保留我的哈希片段以获取openid令牌

时间:2017-12-13 19:55:20

标签: angular hash fragment token openid

我在Angular 2应用程序中使用oauth进行身份验证。身份验证后,我在哈希后的返回URL中获取所有信息。在我的angular 2程序内部路由后,哈希部分被完全删除,但我需要它。之前已经提出并回答了这个问题,但答案并没有解决我的问题,我的片段仍然是“空”。我认为正如其中一个答案所述。此解决方案仅适用于pathlocationstrategy,但我使用的是hashlocationstrategy

Retrieve hash fragment from url with Angular2

所以,这就是为什么那里的答案没有解决我的问题。有没有人在使用“hashlocationstrategy”时解决了这个问题?

1 个答案:

答案 0 :(得分:0)

感谢互联网上某个地方的建议,但找不到它给予信任,我使用了“window.location.hash”。 在app.module.ts中,您必须输入类似的代码:

constructor(public routerName: Router) {
console.log("Appmodule is starting")
routerName.events.subscribe(s => {
  if (s instanceof NavigationStart&&
           (s.toString().indexOf("/scope")>0) )
  { let tokenReceived=window.location.hash;
    this.decodeToken(tokenReceived);
  }
});

您实际上是在寻找导航来启动和订阅它,并且只要您的应用程序识别/范围并导航到它,就会开始解码收到的令牌。 “decodeToken”只是我自己的解码方法。 这需要在同一个文件中有一个用于路由的路径,即:

{ path: 'scope', component: LoginComponent},

希望这有帮助!