代码之家  ›  专栏  ›  技术社区  ›  Mark

使用HashLocationStrategy通过角度路由处理OAuth2隐式重定向

  •  1
  • Mark  · 技术社区  · 7 年前

    我正在SPA上启用OAuth2,如下所示:

    • 隐式授权类型是唯一受支持的授权类型

    我无法更改这两个约束。

    当我登录到我的应用并被重定向时,来自授权端点的重定向url如下所示:

    http://foo/#access_token=(ey...)&token_type=bearer&state=(state...)&expires_in=43199&jti=(jti...)
    

    我遇到的问题是Angular正在根据哈希位置策略解释哈希后面的字符。它正在尝试重定向到路径 access_token=... 这是不存在的。

    我该怎么做?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Zlatko    7 年前

    你需要告诉路由器,在你处理完URL之前,不要使用它的诡计。以下是方法:

    imports: [
      ..
      RouterModule.forRoot(routes, { initialNavigation: false }),
    ],
    ...
    

    现在,爱管闲事的路由器在页面加载时不会做任何事情。 这意味着你必须照顾好它! 去分析你的OAuth状态、令牌等,然后找出你的路线 到达(例如从) redirectUrl ,碎片本身的一部分,来自 localStorage 在导航进行身份验证或类似操作之前。完成后,给路由器打电话,告诉它继续:

    this.accessToken = this.url....
    this.router.navigate('wherever-you-wanted-to-go-in-the-first-place');
    
    推荐文章