调用 HandleRedirectPromise 后,MSAL Authenticated/Unauthenticated 模板组件不工作
MSAL Authenticated/Unauthenticated Template Components not working after calling HandleRedirectPromise
我有一个 React 应用程序,我在其中使用 msal 库通过 Azure B2C 进行身份验证,并且我正在使用登录重定向流程。直到最近,我才知道token是登录后存到session中的,我是根据默认的复杂key拉出来的。我最近了解到,您可以调用 msalInstance.HandleRedirectPromise().then(...) 在重定向后实际取回令牌并自己存储。但是,在添加调用后,经过身份验证和未经身份验证的模板组件都停止工作 - 任何一个都没有渲染。
我知道是这样,因为我简化了一个简单的案例:
<AuthenticatedTemplate>AA</AuthenticatedTemplate>
<UnauthenticatedTemplate>BB</UnauthenticatedTemplate>
我在每个渲染的 App.tsx 文件中调用 HandleRedirectPromise:
this.props.instance
.handleRedirectPromise()
.then((tokenResponse) => {
if (tokenResponse !== null) {
const idToken = tokenResponse.idToken;
sessionStorage.setItem("idToken", idToken);
}
})
.catch((error) => {
console.error(error);
});
当我删除 handleRedirectPromise 调用时,会呈现正确的模板。我是否需要手动设置 ActiveAccount 才能使模板再次工作?
没有返回任何内容,因为 handleRedirection 正在返回空令牌响应。
这是 microsoft-authentication-library-for-js 中的一个已知错误。
您需要将 /home 路由添加到您的 AAD 应用程序注册中。在 b2c 配置中注释您的 redirectUri 并将 navigationToLoginRequestUrl 设置为 true。
我有一个 React 应用程序,我在其中使用 msal 库通过 Azure B2C 进行身份验证,并且我正在使用登录重定向流程。直到最近,我才知道token是登录后存到session中的,我是根据默认的复杂key拉出来的。我最近了解到,您可以调用 msalInstance.HandleRedirectPromise().then(...) 在重定向后实际取回令牌并自己存储。但是,在添加调用后,经过身份验证和未经身份验证的模板组件都停止工作 - 任何一个都没有渲染。
我知道是这样,因为我简化了一个简单的案例:
<AuthenticatedTemplate>AA</AuthenticatedTemplate>
<UnauthenticatedTemplate>BB</UnauthenticatedTemplate>
我在每个渲染的 App.tsx 文件中调用 HandleRedirectPromise:
this.props.instance
.handleRedirectPromise()
.then((tokenResponse) => {
if (tokenResponse !== null) {
const idToken = tokenResponse.idToken;
sessionStorage.setItem("idToken", idToken);
}
})
.catch((error) => {
console.error(error);
});
当我删除 handleRedirectPromise 调用时,会呈现正确的模板。我是否需要手动设置 ActiveAccount 才能使模板再次工作?
没有返回任何内容,因为 handleRedirection 正在返回空令牌响应。
这是 microsoft-authentication-library-for-js 中的一个已知错误。 您需要将 /home 路由添加到您的 AAD 应用程序注册中。在 b2c 配置中注释您的 redirectUri 并将 navigationToLoginRequestUrl 设置为 true。