网址中带有哈希值的MSAL重定向

时间:2018-12-06 14:57:30

标签: angular azure-active-directory msal

我目前正在使用Angle 6开发一个应用程序,该应用程序使用AAD对用户进行身份验证。在这里,我使用了库azure/msal-angular连接到AAD v2。按照项目自述文件中的说明,我已经用我的客户端ID初始化了库,并且可以正常登录了。

问题是: 登录后,我将重定向URL设置为:登录后scala> import scala.collection.immutable.ListMap import scala.collection.immutable.ListMap scala> val list = List((1,2), (3,4), (5,6), (7,8), (9,0)) list: List[(Int, Int)] = List((1,2), (3,4), (5,6), (7,8), (9,0)) scala> list.to(ListMap) res3: scala.collection.immutable.ListMap[Int,Int] = ListMap(1 -> 2, 3 -> 4, 5 -> 6, 7 -> 8, 9 -> 0) 的登录页面,我希望用户在成功登录后能够到达该页面。在这里,我已经指定了这样的路线:

http://localhost:4200/account

除了AAD的重定向网址可以导航到{ path: 'account', component: AccountDetailedComponent } 之外,这还好,对于我来说,我无法摆脱hashbang和id_token。

我希望id_token = xxxx是这样的查询参数:

http://localhost:4200/account#id_token=xxxxx

这会使我的路线匹配,但不匹配,因此该路线无效。

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

我已经阅读了路由中的匹配器,但是真的可以让我为匹配通用重定向路由而制作正则表达式吗?我没有在界面中看到任何选项来删除此哈希爆炸,也没有在库中看到任何东西。

修改

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

希望您能提供帮助。

亲切的问候克里斯

1 个答案:

答案 0 :(得分:2)

所以我实际上已经解决了我自己的问题。我犯的错误是从ngOnInit()内部手动调用msalService.loginredirect()。当重定向到Microsoft页面时,我将登录,然后将其发送回我的应用程序。这样会从ngOnInit方法调用相同的msalService.loginRedirect(),从而永远都无法到达实际的重定向。

据我了解,处理登录的正确方法只是在特定路由上应用canActivate: [MsalGuard],然后由防护程序处理重定向到登录屏幕的操作,以及何时您回来时,它将重定向到没有散列的指定路径。

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

亲切的问候克里斯