如何在react-admin

时间:2019-01-23 04:56:47

标签: reactjs react-admin

我在react-admin上实现了一个仪表板。认证过程是在this tutorial之后完成的。

现在我需要实现一个忘记密码屏幕,但是问题在于,无需登录即可访问该屏幕...

我想到了两种可能的实现方法:

  1. 理想情况下,我想将react-admin配置为允许未经身份验证的特定路由访问。不确定如何执行此操作,或者不确定是否可行...我发现this Github issue将此作为增强功能,但并未说明如何解决该问题。
  2. 在响应中分别实现此屏幕,并分别处理到该页面的路由。也不确定如何在框架上执行此操作...

有人可以解释如何在框架上实现这两个选项吗?

预先感谢

3 个答案:

答案 0 :(得分:1)

基于有关Github问题的comment,我最终基于simple example实现了一种解决方法。

我要做的主要事情是使用noLayout选项添加一些自定义路由。这些自定义路由似乎由于某种原因而无法通过身份验证,这是我在文档中找不到的。

因此,我重新定义了App.js文件:

const App = () => (
  <Admin
        loginPage={Login}
        authProvider={authProvider}
        dataProvider={dataProvider}
        i18nProvider={i18nProvider}
        title="Example Admin"
        locale="en"
        customReducers={{ tree }}
        customRoutes={[
            <Route exact path="/forgotPassword" component={ForgotPassword} noLayout/>,
            <Route exact path="/resetPassword" component={ResetPassword} noLayout/>,
        ]}
    >
        {permissions => [
            <Resource name="users" {...users} />,
        ]}
  </Admin>
);

无论如何,这是我想出的解决方案,不确定是否正确。如果您发现更好的地方,请告诉我。

答案 1 :(得分:1)

我遇到类似的问题,并且使用noLayout选项添加自定义路由仍然使我进入登录屏幕。

事实证明,这并不是造成checkAuth的{​​{1}}部分。

原因是authProvider的{​​{1}}

在找不到权限的情况下,我拥有: getPermissions

将其更改为:authProvider为我解决了此问题。

答案 2 :(得分:0)

我也在使用这样的解决方案。

但是添加notify时我不能使用noLayout

您是否已将notify

一起使用
<Route exact path="/forgotPassword" component={ForgotPassword} noLayout/>