0

我使用以下库:“@azure/msal-browser”:“^2.16.0”、“@azure/msal-react”:“^1.0.1”、

我需要将用户重定向到登录屏幕,而用户无法看到任何内容。我怎么能做到这一点?

目前,我有这个:

export default function Main() {
  const msalInstance = new PublicClientApplication(msalConfig);
  useEffect(() => {
    msalInstance
      .handleRedirectPromise()
      .then((s) => {
        if (s === null) msalInstance.loginRedirect(loginRequest); // not logged in
        else console.log(s); // logged in
      })
      .catch((a: any) => {
        console.log("err");
        console.log(a);
      });
  }, []);
  return <App instance={msalInstance} />;
}

But, it loads the app for a second then does the redirection.
4

1 回答 1

1

为了实现该特定行为,有两种选择:

  1. 延迟渲染您的应用程序,直到确认用户已登录(在您渲染您的应用程序之前,他们将被重定向以进行身份​​验证)。
  2. 通过在呈现应用程序之前重定向到登录交互在服务器端处理此问题(这将涉及除 之外的解决方案msal-react)。

这是有关MSAL AuthenticationTemplate的一些文档,它们可能有助于确定在这种情况下使用 MSAL React 的正确方法。

最后一点,不建议您初始化PublicClientApplicationReact 组件内部。请查看入门文档和react-router-sample以获取有关如何在应用程序中初始化 MSAL 的更多指导。

于 2021-09-09T16:58:12.027 回答