我在Angular 2应用程序中使用oauth进行身份验证。身份验证后,我在哈希后的返回URL中获取所有信息。在我的angular 2程序内部路由后,哈希部分被完全删除,但我需要它。之前已经提出并回答了这个问题,但答案并没有解决我的问题,我的片段仍然是“空”。我认为正如其中一个答案所述。此解决方案仅适用于pathlocationstrategy,但我使用的是hashlocationstrategy
Retrieve hash fragment from url with Angular2
所以,这就是为什么那里的答案没有解决我的问题。有没有人在使用“hashlocationstrategy”时解决了这个问题?
答案 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},
希望这有帮助!