簡體   English   中英

我想在用戶登錄時限制頁面路由

[英]I want to restrict the page routing when user is logged in

我已經制作了一個應用程序,我正在使用 react-router-dom 實現路由。

所以場景是當用戶登錄時,他被重定向到localhost:3000/home url 並且主頁正在呈現。 當他注銷時,他將進入localhost:3000上的登錄頁面。

但是,如果用戶在登錄時將 url 更改為localhost:3000 ,那么一切都將變為空白並且他顯示為已登錄,我相信這是路由的默認行為。

要求是,即使他通過在瀏覽器中鍵入localhost來更改 url,也要將用戶重定向到主頁直到他登錄。

添加一個條件來檢查用戶是否登錄並使用來自 react-router-dom 的導航來重定向用戶。 將此添加到您的組件中

   return (
    { ("add condition here to check if user is login") ? (
        <Navigate to="/home " />
      ) : (<div>Component body</div>)
    }
    )

試試看,如果沒有登錄,則重定向到登錄頁面,然后登錄用戶重定向到登錄頁面。

 <HashRouter> {.auth.token && ( <Routes> <Route path="/" element={<Login />} /> <Route path="*" element={<Navigate to="/" />} /> </Routes> )} {auth token && ( <> <Routes> <Route exact path="/home" element={<Home />} /> <Route path="*" element={<Navigate to="/home" />} /> </Routes> </> )} </HashRouter>

您好,您的問題很容易解決,只需以這種方式構建您的路線:

<Route
    exact
    path="/login"
    render={() => {
    if (userLoggedIn) {
       return <Redirect to="/home" />;
    } 
    return <LoginPage />; 
    }}
/>

或者這樣做:

<Route
    exact
    path="/home"
    render={() => {
    if (!userLoggedIn) {
       return <Redirect to="/login" />;
    } 
    return <HomePage/>; 
    }}
/>

我希望這對您有所幫助,如果您需要任何其他澄清,請在下面的評論中提及我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM