Chr*_*erg 3 azure-active-directory azure-ad-msal angular
我目前正在开发一个使用 AAD 来验证用户身份的 angular 6 应用程序。在这里,我使用了库azure/msal-angular连接到 AAD v2。我已经按照项目自述文件中的规定使用我的客户端 ID 初始化了库,并且我可以正常登录。
问题是:登录后,我设置了一个重定向 url 到:http://localhost:4200/account登录后的登陆页面,我希望用户在成功登录后到达。在这里,我指定了路线:
{ path: 'account', component: AccountDetailedComponent }
Run Code Online (Sandbox Code Playgroud)
这很好,除了来自 AAD 的重定向 url 导航到http://localhost:4200/account#id_token=xxxxx我的生活之外,我无法摆脱 hashbang 和 id_token。
我希望 id_token=xxxx 是这样的查询参数:
http://localhost:4200/account?id_token=xxxx
Run Code Online (Sandbox Code Playgroud)
这将使我的路线匹配,但事实并非如此,因此该路线无效。
我的问题是:如何解决路线以匹配指定路线?
我已经阅读了路由中的匹配器,但我真的应该使用正则表达式来匹配常见的重定向路由吗?我在界面和库中都没有看到任何删除这个 hashbang 的选项。
编辑
认为这是路由不匹配的原因是,在初始重定向到 /account 后,我再次重定向到登录页面。它会闪烁 /account#id_token=xxxx 然后再次重定向到登录页面。我在下面的回答描述了解决的问题。
希望你能帮忙。
亲切的问候克里斯
所以我实际上已经解决了我自己的问题。我犯的错误是msalService.loginredirect()在 ngOnInit() 中手动调用。当重定向到微软页面时,我会登录,然后被发送回我的应用程序。这将从msalService.loginRedirect()ngOnInit 方法中调用相同的方法,因此永远不会到达实际的重定向。
据我所知,处理登录的正确方法是简单地canActivate: [MsalGuard]在特定路由上应用 a ,让守卫处理重定向到登录屏幕,当你回来时,它会重定向到没有散列的指定路径。
我希望这可以帮助其他尝试做我所做的事情的人。如果有人觉得这令人困惑,我可以详细说明我的解决方案。
亲切的问候克里斯
| 归档时间: |
|
| 查看次数: |
4796 次 |
| 最近记录: |