Angular 2 中的 Active Directory 注销而不重定向到默认 Microsoft 注销页面

Active Directory logging out without a redirect to Default Microsoft Logout Page in Angular 2

我已经实现了 Angular 2 多租户应用程序。 我可以通过使用注销活动目录 下面的方法

    logout() {
    this.context.logOut();
    }

但现在我必须执行注销 Active Directory 用户而不去 Microsoft 注销 page.The Active Directory 用户注销而不去注销页面,如下图所示。

用户注销不像上面那样image.I不想使用内置注销function.I已经尝试了下面两种不同的方法

           this.context.clearCacheForResource(this.userInfo.userName);
           this.context.clearCache();

但是用户信息不清楚。 当我清除浏览器的缓存时,它正在工作。

感谢任何答案。

提前致谢......!

你的方法只清除本地 cache/storage ,它不会清除任何 session/cookie hold on azure ad,由于 cookie 仍然存在,可能会发生静默身份验证。如果你想清除那,那么内置的注销应该是要使用的。

这里是 并提供了实现静默注销的解决方法:

You could probably try to implement the silent logout(probably using iframe, this will prevent the ux from displaying), and then call clearCache to clear the localstorage/sessionstorage

我已经使用下面的代码解决了这个问题

import { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';

@Component({


selector: 'auth-container',

模板:<iframe class="embed-responsive-item" *ngIf="show" width="0" height="0" [src]="url" allowfullscreen></iframe>,})

export class Auth implements OnInit {

public show = false;

constructor(private sanitizer: DomSanitizer) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('https://login.microsoftonline.com/common/oauth2/logout?post_logout_redirect_uri=' + window.location.origin);  }}

这里我根据需要隐藏和显示 iframe

感谢@Nan

我刚遇到同样的问题,我花了一些时间才找到 answer in MSAL.js documentation:

export class AuthenticationService {
  constructor(
    private msalService: MsalService,
  ) { }

  logoutWithoutRedirect(): void {
    this.msalService.logoutRedirect({
      // Return false if you would like to stop navigation after local logout
      onRedirectNavigate: () => false
    })
  }
}