Как перенаправить на какой-нибудь другой маршрут после успешной аутентификации в реагирующем админе? - PullRequest
0 голосов
/ 17 сентября 2018

Использование response-admin.

У меня такой же вопрос, как у этого one , потому что ответ не сработал ни для меня, ни для человека, который спросил (см. Комментарии),После основного выпуска обновления есть ли другой вариант для перенаправления на пользовательскую страницу после успешного входа в систему?

Код:

Внутри моего пользовательского authProvider при проверке подлинности я пытаюсь перенаправитьна пользовательскую страницу:

if (type === AUTH_CHECK) {
     ...
      if (localStorage.getItem("pageID")) {
            return Promise.resolve() // goes to Dashboard
     else {
        return Promise.resolve({ redirectTo: '/pages' }); // needs to go to a custom page
    }

Однако Promise.resolve({ redirectTo: '/pages' }) просто не работает.

Если я действительно использую Promise.reject({ redirectTo: '/pages' }), он пытается перенаправить на pages, однако, если AUTH_CHECK не удается, он возвращается к входу в систему и остается в цикле.

Я такжепопытался поместить этот код в AUTH_LOGIN, но он также не работает.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я не мог заставить его работать, основываясь на другом ответе (https://stackoverflow.com/a/52360387/986160), поэтому я сделал то же самое для response-admin 2.6.2:

https://stackoverflow.com/a/54422728/986160

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" />);
        }
    }
}
0 голосов
/ 17 сентября 2018

В настоящее время userLogin действие не обрабатывает URL-адрес пути перенаправления, поэтому вы не перенаправлены.Есть два способа добиться этого.Пользовательская страница входа или пользовательская панель инструментов

Пользовательская страница входа

import React, { Component } from 'react';
import { connect } from 'react-redux';
import { userLogin } from 'react-admin';

class MyLoginPage extends Component {
    submit = (e) => {
        e.preventDefault();
        // gather your data/credentials here
        const credentials = { };

        // Dispatch the userLogin action (injected by connect)
      if (localStorage.getItem("pageID")) {
        this.props.userLogin(credentials, "/pages");
      }else {
        this.props.userLogin(credentials);
      }
    }

    render() {
        return (
            <form onSubmit={this.submit}>
            ...
            </form>
        );
    }
};

export default connect(undefined, { userLogin })(MyLoginPage);

Пользовательская панель инструментов

import React, { Component } from 'react';
import { push } from 'react-router-redux';


export class MyDashBoard extends Component {
    componentDidMount() {
          if (localStorage.getItem("pageID")) {
            push("/pages");
          }
    }

    render() {
        return (

        );
    }
};
...