我有一个 ReactJS 网站,我在其中尝试使用“@azure/msal-react”:“^1.0.0-beta.1”,但遇到了一些让我困惑的问题。
我的大部分页面都向公众开放。有些需要登录。如果我添加 MSALAuthenticationTemplate 如下(但使用interactionType=Redirect),一旦我启动站点,它就会要求我登录。我认为只有当我点击 AuthenticationTemplate 中的路由时才会这样做。
使用 InteractionType Popup 会导致 SPA 在启动时抛出异常 Error: Objects are not valid as a React child (found: object with keys {login, result, error})。如果您打算渲染一组子项,请改用数组。在 p 中(在 App.tsx:44)
出于某种原因,我的所有路由都返回主页,而不是加载相关组件,以及 AuthenticationTemplate 注释掉的事件。
我使用直接的 Javascript 进行了很多工作,但是在发布时遇到了 ESLint 问题,所以我认为 Typescript 可以帮助我解决这些问题。但现在它只是坏了。
render() {
initializeIcons();
return (
<MsalProvider instance={msalClient} >
<div className="d-flex flex-column h-100">
<TopMenu />
<div className="container-fluid flex-grow-1 d-flex">
<div className="row flex-fill flex-column flex-sm-row">
<BrowserRouter>
<MsalAuthenticationTemplate
interactionType={InteractionType.Popup}
errorComponent={this.ErrorComponent}
loadingComponent={this.LoadingComponent}>
<Switch>
<Route path="/addevent">
<AddEvent />
</Route>
<Route path="/mydashboard">
<MyDashboard />
</Route>
</Switch>
</MsalAuthenticationTemplate >
<UnauthenticatedTemplate>
<Switch>
<Route path='/'>
<Home />
</Route>
<Route path="/about">
<About />
</Route>
<Route path="/contactus">
<ContactUs />
</Route>
<Route path="/faq">
<Faq />
</Route>
<Route path="/fetchevents">
<FetchEvents />
</Route>
<Route path="/gettingstarted">
<GettingStarted />
</Route>
<Route path="/partners">
<Partners />
</Route>
<Route path="/privacypolicy">
<PrivacyPolicy />
</Route>
<Route path="/sponsors">
<Sponsors />
</Route>
<Route path="/termsofservice">
<TermsOfService />
</Route>
<Route path="/userstories">
<UserStories />
</Route>
</Switch>
</UnauthenticatedTemplate>
<div>
<Footer />
</div>
</BrowserRouter>
</div>
</div>
</div>
</MsalProvider>
);