reactjs AuthStatus未从使用放大UIReact的配置状态更改

mzmfm0qo  于 2022-12-12  发布在  React
关注(0)|答案(1)|浏览(108)

我正在使用AWS amplify UI react在react应用程序中创建身份验证流。我按照文档的说明,使用下面的文档创建了导航流。
https://ui.docs.amplify.aws/react/guides/auth-protected
然而,登录后,我可以看到登录页面 Flink 每次当我访问任何其他路线。为了解决这个问题,我按照下面的问题的答案之一。
是的。
不幸的是,现在页面总是停留在“配置”状态,而且authStatus从来没有得到任何更改。我如何处理这种情况,以自动重定向到登录页面,如果没有验证,并不显示登录页面,每次用户刷新页面?
注:此问题与amplify-ui身份验证器.提供程序组件的React有关。

RequireAuth.tsx - all routes are wrapped inside this
import { useLocation, Navigate } from "react-router-dom";
import { useAuthenticator } from "@aws-amplify/ui-react";
import PageLoader from "../../components/loader/page-loader";

export function RequireAuth({ children }: any) {
    const location = useLocation();
    const { authStatus, user } = useAuthenticator((context) => [
        context.authStatus,
    ]);
    console.log("authStatus:::", authStatus);
    console.log("user:::", user);

    if (authStatus === "authenticated") {
        return <>{children}</>;
    } else if (authStatus === "unauthenticated") {
        return <Navigate to="/login" state={{ from: location }} replace />;
    } else if (authStatus === "configuring") {
        return <PageLoader />;
    } else {
        return <Navigate to="/login" state={{ from: location }} replace />;
    }
}

appRoutes中的路由很少。

<Route
                    path="/"
                    element={
                        <RequireAuth>
                            <AppLayout />
                        </RequireAuth>
                    }>
                    <Route
                        index
                        element={
                            <RequireAuth>
                                <Home />
                            </RequireAuth>
                        }
                    />
tvz2xvvm

tvz2xvvm1#

不幸的是,这似乎是一个带有<Authenticator.Provider><Authenticator/>known bug
在这个bug被修复之前,有一个已知的解决方案,即总是在活动的dom结构中包含<Authenticator/>组件,然后使用CSS隐藏它。这很糟糕,但是,对我来说很有效:

[data-amplify-authenticator] {
    display:none;
}

将来,我计划编写一个自定义UI,并在完全删除这些组件之前在后端处理身份验证。

相关问题