首页 > 解决方案 > 注销后单击登录按钮的 MSAL v1 无需询问凭据即可直接登录

问题描述

我正在使用以下版本的 Angular 和 MSAL 进行登录流程,

"@angular/cli": "~6.0.8",
"@azure/msal-angular": "^1.1.2",
"msal": "^1.4.4"

问题:一旦我点击注销,它就会让我注销当前行为的屏幕,但是当我点击登录按钮时,我正在调用 loginRedirect() 方法进行登录,但它直接登录到应用程序而不询问凭据。此问题仅在启用阻止第三方 cookie 时在 crome 上发生。

在此处输入图像描述

标签: angularmsalmsal-angular

解决方案


出现此问题是因为您没有从本地存储中清除会话或令牌。当您注销时,您必须从 localStorage 中清除令牌的 cookie 和本地会话。

MSAL 在 v1 中提供了一种注销方法,可清除浏览器存储中的缓存并将窗口重定向到 Azure Active Directory (Azure AD) 注销页面。注销后,Azure AD 会重定向回默认调用注销的页面。您可以通过设置 postLogoutRedirectUri 来配置注销后应重定向到的 URI。此 URI 应在您的应用程序注册中注册为重定向 Uri。在此处了解有关重定向的更多信息。

在您的app.module.ts文件中添加以下代码:

@NgModule({                                                                                   
 imports: [
  MsalModule.forRoot({
   auth: {
    clientId: 'your_app_id',
    postLogoutRedirectUri: "your_app_logout_redirect_uri"
  }
 })
]
})

在您的 component.ts 中添加此代码this.authService.logout();


推荐阅读