【发布时间】:2019-02-03 05:40:33
【问题描述】:
我一直在寻找在 react-admin 中成功认证后重定向到特定 url 的解决方案,
当我在 URL 上粘贴 http://localhost:1234/#/students/sdf2343afs32 时,如果已经登录,那么我会得到用户详细信息页面,但如果没有登录,并且在登录后它会显示主页
【问题讨论】:
标签: react-admin
我一直在寻找在 react-admin 中成功认证后重定向到特定 url 的解决方案,
当我在 URL 上粘贴 http://localhost:1234/#/students/sdf2343afs32 时,如果已经登录,那么我会得到用户详细信息页面,但如果没有登录,并且在登录后它会显示主页
【问题讨论】:
标签: react-admin
您可以在 authProvider 内登录后自定义重定向 URL,如文档的 Checking Credentials During Navigation 部分所述:
// in authProvider.js
import { AUTH_CHECK } from 'react-admin';
export default (type, params) => {
// ../
if (type === AUTH_CHECK) {
return isLogged
? Promise.resolve({ redirectTo: '/custom-url' })
: Promise.reject({ redirectTo: '/no-access' });
}
// ...
};
【讨论】:
Promise.resolve({ redirectTo: '/custom-url' }) 应该只是作为指导。
基于 https://stackoverflow.com/a/35715159/986160 使用 react-admin 2.6.2
对我有用的是这样的自定义仪表板(假设这是您的默认登录页面):
import React, { Component } from 'react';
import { Redirect } from 'react-router';
import Card from '@material-ui/core/Card';
import CardContent from '@material-ui/core/CardContent';
import CardHeader from '@material-ui/core/CardHeader';
export default class Dashboard extends Component {
render() {
if (localStorage.getItem("user_role") !== "special_role") {
return <Card>
<CardHeader title="Welcome to Dashboard" />
<CardContent></CardContent>
</Card>
}
else {
return (<Redirect to="/route/to/redirect" />);
}
}
}
【讨论】: