簡體   English   中英

反應管理員! 無法使用 customRoutes 重定向到忘記密碼頁面

[英]React-Admin! Not able to redirect to forgot password page with customRoutes

我正在使用 authProvider。 所以我想要的我已經給出了登錄頁面的鏈接,即忘記密碼。 當我點擊它時,它每次都打開登錄頁面,但是它改變了 url。 我認為由於 authprovider,它每次都將我帶到登錄頁面。 請給我一個更好的解決方案。

這是我的自定義路線

 <Route
     exact
     path="/forgot-password"
     component={props => <ForgotPassword {...props} />}
     noLayout
 />

這是我的 authProvider

import { AuthProvider } from 'ra-core';

const authProvider: AuthProvider = {
login: ({ username, password }) =>  {
    const body = new FormData()
    body.append('email', username)
    body.append('password', password)
    const request = new Request('https://path.com/login', {
        method: 'POST',
        body: body,
        headers: new Headers(
            {  
                // 'Content-Type': 'multipart/form-data',
                'Authorization': 'YWQ1YjJKUGFVBGFHGRiMGQ5MTDFREwMDZiY2Y1ZASWU1Yjc3Zg==' 
            }
        ),
    });
    return fetch(request)
        .then(response => {
            if (response.status < 200 || response.status >= 300) {
                throw new Error(response.statusText);
            }
             
            return response.json();
        })
        .then(({ access_token, role }) => {
            sessionStorage.setItem('token', access_token);
            sessionStorage.setItem('username', username);
            sessionStorage.setItem('password', password);
            sessionStorage.setItem('permissions', role);
        });
},
logout: () => {
    sessionStorage.removeItem('username');
    sessionStorage.removeItem('token');
    sessionStorage.removeItem('password');
    sessionStorage.removeItem('permissions');
    return Promise.resolve();
},
checkError: () => {
    return Promise.resolve()
},
//@ts-ignore
checkAuth: () => {
    const token = sessionStorage.getItem('token');
    return Promise.resolve(token);
},
getPermissions: () => {
    const role = sessionStorage.getItem('permissions');
    return role ? Promise.resolve(role) : Promise.reject();
}
};

 export default authProvider;

這是我使用自定義路線的地方

<Admin
        title=""
        dataProvider={dataProvider}
        customReducers={{ theme: themeReducer }}
        customRoutes={customRoutes}
        authProvider={authProvider}
        dashboard={Dashboard}
        loginPage={Login}
        layout={Layout}
        i18nProvider={i18nProvider}
        customSagas={[ logoutSaga ]}
    >
        {(permissions: any) => [
            <Resource name="users" options={{ label: 'Users' }} {...users} />,
            <Resource name="brands" options={{ label: 'Car Brands' }} {...brands} />,
            <Resource name="models" options={{ label: 'Car Models' }} {...models} />,
            permissions === 'SuperAdmin'
            ? <Resource name="admins" options={{ label: 'Admins' }} {...admins} />
            : null,
            <Resource name="terms" options={{ label: 'Terms & Conditions' }} {...terms} />,
        ]}
    </Admin>

是的,我得到了這個問題。

<Admin
    title=""
    dataProvider={dataProvider}
    customReducers={{ theme: themeReducer }}
    customRoutes={customRoutes}
    authProvider={authProvider}
    dashboard={Dashboard}
    loginPage={Login}
    layout={Layout}
    i18nProvider={i18nProvider}
    customSagas={[ logoutSaga ]}
>
    
        <Resource name="users" options={{ label: 'Users' }} {...users} />
        <Resource name="brands" options={{ label: 'Car Brands' }} {...brands} />
        <Resource name="models" options={{ label: 'Car Models' }} {...models} />
        {(permissions: any) => [
            permissions === 'SuperAdmin'
            ? <Resource name="admins" options={{ label: 'Admins' }} {...admins} />
            : null,
         ]}
        <Resource name="terms" options={{ label: 'Terms & Conditions' }} {...terms} 
/>
    
</Admin>

暫無
暫無

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

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