Angular MSAL在url中使用哈希重定向

Angular MSAL在url中使用哈希重定向,angular,azure-active-directory,msal,Angular,Azure Active Directory,Msal,我目前正在angular 6中开发一个应用程序,它使用AAD对用户进行身份验证。在这里,我使用库连接到AAD v2。我已经按照项目自述文件中的规定用我的客户机id初始化了库,我可以很好地登录 问题是: 登录后,我已将重定向url设置为:http://localhost:4200/account登录后的登录页面,我希望用户在成功登录后进入该页面。在这里,我指定了如下路线: { path: 'account', component: AccountDetailedComponent } 这很好,除

我目前正在angular 6中开发一个应用程序,它使用AAD对用户进行身份验证。在这里,我使用库连接到AAD v2。我已经按照项目自述文件中的规定用我的客户机id初始化了库,我可以很好地登录

问题是: 登录后,我已将重定向url设置为:
http://localhost:4200/account
登录后的登录页面,我希望用户在成功登录后进入该页面。在这里,我指定了如下路线:

{ path: 'account', component: AccountDetailedComponent }
这很好,除了AAD的重定向url导航到
http://localhost:4200/account#id_token=xxxxx
就我个人而言,我无法摆脱hashbang和id_标记

我希望id_token=xxxx是一个查询参数,如下所示:

http://localhost:4200/account?id_token=xxxx
这将使我的路由匹配,但它不匹配,因此路由无效

我的问题是:如何解决路由以匹配指定路由?

我已经读过路由中的匹配器,但我真的应该使用正则表达式来匹配一个公共重定向路由吗?我在界面和库中都没有看到删除这个hashbang的选项

编辑

认为这是路由不匹配的原因是,在最初重定向到/account之后,我再次被重定向到登录页面。它将刷新/account#id#u token=xxxx,然后再次重定向到登录页面。下面我的回答描述了已解决的问题

希望你能帮忙


我很尊敬克里斯,所以我已经解决了我自己的问题。我犯的错误是从ngOnInit()中手动调用
msalService.loginDirect()
。当重定向到microsoft的页面时,我将登录,然后被发送回我的应用程序。这将从ngOnInit方法调用相同的
msalService.loginRedirect()
,因此永远不会到达实际的重定向

据我所知,处理登录的正确方法是在特定路径上应用
canActivate:[MsalGuard]
,让守卫处理重定向到登录屏幕的操作,当您返回时,它将重定向到指定路径而不使用散列

我希望这能帮助那些尝试过我所做的事情的人。如果有人感到困惑,我可以详细说明我的解决方案


你能在你的
App.module.ts
中用应用注册中的重定向URI值和MSAL配置中的
redirectUri
值更新你的问题吗?事实上我已经解决了这个“问题”。这是我的一个错误,我在我的组件oninit中手动调用了msalService.loginredirect(),当我被重定向回我的页面时,它会自动再次调用oninit,并导致无限次的登录。我很快会在下面发布一个完整的答案。你在url中发布了一个关于哈希的问题,然后你写了一个关于无限重定向的答案。。。我不明白…哦,我知道我忘了把最后一部分加进去了,对此我很抱歉。我当时认为这与我的问题无关。我将更新我的问题以全面反映问题。您能详细说明一下您的设置吗?您的确切意思是什么?你想知道什么?:)