我正在SPA上启用OAuth2,如下所示:
我无法更改这两个约束。
当我登录到我的应用并进行重定向时,来自授权端点的重定向URL如下所示:
http://foo/#access_token=(ey...)&token_type=bearer&state=(state...)&expires_in=43199&jti=(jti...)
这是根据OAuth2规范所预期的;重定向网址中存在的参数必须作为片段附加(在“#”之后)。
我遇到的问题是Angular会根据其哈希位置策略来解释哈希之后的字符。它正在尝试重定向到不存在的路径access_token=...
。
我该如何解决?
答案 0 :(得分:1)
您需要告诉路由器削减其恶作剧,直到完成处理URL。方法如下:
imports: [
..
RouterModule.forRoot(routes, { initialNavigation: false }),
],
...
现在,爱管闲事的路由器将不会在页面加载时执行任何操作。 这意味着您必须照顾它!解析OAuth状态,令牌等。然后找出您尝试所到达的路线(例如从{{ 1}},片段本身的一部分,从redirectUrl
开始,直到获得认证为止,或者类似的操作。一旦完成,请呼叫路由器,告诉路由器恢复:
localStorage