Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决身份验证后重定向上的adal-angular4无限循环_Angular_Authentication_Azure Active Directory_Adal_Adal Angular4 - Fatal编程技术网

如何解决身份验证后重定向上的adal-angular4无限循环

如何解决身份验证后重定向上的adal-angular4无限循环,angular,authentication,azure-active-directory,adal,adal-angular4,Angular,Authentication,Azure Active Directory,Adal,Adal Angular4,我正在构建一个Angular8应用程序,使用adal-angular4根据Microsoft Azure Active Directory对用户进行身份验证。我已经设置了ASP.NET核心API,并与Azure上的客户端应用程序关联 我已按照以下文档设置Active Directory:- 下面是使用adal-angular4设置Angular应用程序和.NET Core API的步骤:- 重定向URL似乎有效,因为我的应用程序中正确的回调组件被命中。然而,在这一点上,应用程序进入了一个无休

我正在构建一个Angular8应用程序,使用adal-angular4根据Microsoft Azure Active Directory对用户进行身份验证。我已经设置了ASP.NET核心API,并与Azure上的客户端应用程序关联

我已按照以下文档设置Active Directory:-

下面是使用adal-angular4设置Angular应用程序和.NET Core API的步骤:-

重定向URL似乎有效,因为我的应用程序中正确的回调组件被命中。然而,在这一点上,应用程序进入了一个无休止的循环,重新尝试登录和重定向。最终登录尝试产生异常“我们无法让您登录”。请再试一次,可能是因为被锁定了

在我的app.module.ts中:-

  providers: [
    AdalService, { provide: HTTP_INTERCEPTORS, useClass: AdalInterceptor, multi: true },
    RefreshTokenService
我的adal配置文件:-

  private adalConfig = {
      tenant: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
      clientId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
      redirectUri: 'http://localhost:4200/auth-callback',
      postLogoutRedirectUri: "http://localhost:4200/end-session",
      endpoints: { "https://visionapi2019.azurewebsites.net": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" },
      cacheLocation: 'localStorage'
    };

  constructor(private adal: AdalService){
    this.adal.init(this.adalConfig);
  }

  ngOnInit() {
    this.adal.login();
  }

在我的回调组件中,我有以下内容:-

  ngOnInit() {
    this.adal.handleWindowCallback();
    this.router.navigate(['test-api']);
  }
导航到组件“测试api”可以工作,但随后无限循环开始


谢谢

解决了这个问题。我在路由器中使用了[RouterModule.forRoot(routes,{useHash:false})],还从app.component中的ngOnInit()中删除了这个.adal.login()-我猜它是在为每个重定向重新尝试登录,然后由于url中的哈希删除id_令牌而失败。现在登录和重定向工作正常。

解决了问题。我在路由器中使用了[RouterModule.forRoot(routes,{useHash:false})],还从app.component中的ngOnInit()中删除了这个.adal.login()-我猜它是在为每个重定向重新尝试登录,然后由于url中的哈希删除id_令牌而失败。现在登录和重定向工作正常。

您看到控制台错误了吗?不太清楚-有时很难说,因为循环发生得太快了。但偶尔我也会看到这样的情况:“sockjs.js:2998 WebSocket连接到'ws://localhost:4200/sockjs node/455/b4sklziq/WebSocket'失败:WebSocket在连接建立之前已关闭。”你能检查一下这个链接是否为你提供了清晰的信息吗?谢谢没有什么明显的迹象,但我会继续研究。解决了!我在路由器中使用了[RouterModule.forRoot(routes,{useHash:false})],还从ngOnInit()中删除了这个.adal.login()在app.component中-我猜它正在为每个重定向重新尝试登录,然后由于url中的哈希删除id_令牌而失败。您是否看到任何控制台错误?不是真的-有时很难说,因为循环发生得太快了。但偶尔我也会看到这样的情况:“sockjs.js:2998 WebSocket连接到'ws://localhost:4200/sockjs node/455/b4sklziq/WebSocket'失败:WebSocket在连接建立之前已关闭。”你能检查一下这个链接是否为你提供了清晰的信息吗?谢谢没有什么明显的迹象,但我会继续研究。解决了!我在路由器中使用了[RouterModule.forRoot(routes,{useHash:false})],还从app.component中的ngOnInit()中删除了这个.adal.login()-我猜它是在为每个重定向重新尝试登录,然后由于url中的哈希删除id_令牌而失败。