簡體   English   中英

React Router - PrivateRoute,登錄后重定向到原始目的地

[英]React Router - PrivateRoute, redirect to original destination after login

我在使用 React Router 進行登錄后重定向時遇到問題。

假設用戶嘗試導航到http://website.com/app/profile/2但被重定向到http://website.com/login因為他們的 Z21D6F40CFB511982E4424E0E250A9557 端點/app存在於 PrivateRoute 中。

登錄后,我希望將用戶定向到http://website.com/app/profile/2 ,但他們目前只重定向到/app

成功登錄后如何利用原始目的地進行重定向?

謝謝你的時間!

您可以像這樣從私人路線中檢查這一點:

const PrivateRoute = ({component: Component, ...rest}) => {
    let token = localStorage.getItem('token');
    let pathname = this.props.location.pathname;

    if(!token && pathname != '/login'){
       localStorage.setItem('redirectTo', pathname);
    }
    
    return (<Route {...rest} render={(props) => (
            token
                ? <Component {...props} />
                : <Redirect to='/login'/>
        )}/>
    );
};

這樣,如果用戶在localStorage中有token,則重定向到他請求的頁面,如果沒有,則重定向到登錄頁面並將請求的路徑存儲在本地存儲中,然后登錄function登錄成功后可以查看這個

let redirectTo = localStorage.getItem('redirectTo');
if(redirectTo ){
    window.location.href = redirectTo;
}

如果用戶未能通過身份驗證,您可以嘗試在 privateRoute 組件或您使用的任何存儲訪問路由名稱的組件中創建某種檢查。 (在將用戶重定向到登錄頁面之前存儲它)

然后在登錄function中,可以在重定向前檢查用戶的localstorage,如果他在localstorage中有值,就重定向到stores路由,否則重定向到主登錄后路由

編輯:選中此項以獲取路由名稱React Router v4 - How to get current route?

我通常使用它

this.props.location.pathname

暫無
暫無

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

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