Meteor - 登录后将用户重定向到/ dashboard

时间:2018-04-09 08:29:04

标签: javascript reactjs meteor react-router

我正在使用Meteor.loginWithFacebook。一切正常,除了登录后用户被重定向回/页面。相反,我想将用户重定向到/dashboard

这可以通过meteor做到,还是我必须创建一个<Route>来处理这个问题?我正在使用react-router。这是我的路线:

import React from 'react'
import { Router, Route, Switch, Redirect } from 'react-router'
import createBrowserHistory from 'history/createBrowserHistory'
import { withTracker } from 'meteor/react-meteor-data'
import { Meteor } from 'meteor/meteor'

import HomePage from '../../ui/pages/HomePage.js'
import DashboardPage from '../../ui/pages/DashboardPage.js'
import NotFoundPage from '../../ui/pages/NotFoundPage.js'

const browserHistory = createBrowserHistory();

const ProtectedRoute = ({
    component: Component,
    user,
    loggingIn,
    ...rest
}) =>
    (!user && loggingIn && <div>Loading</div>) ||
    (user && <Route {...rest} render={props => 
        <Component {...props} user={user} />}
    />) ||
    <Redirect to="/"/>

const Routes = (props) => (
    <Router history={browserHistory}>
        <Switch>
            <ProtectedRoute exact path="/dashboard" component={DashboardPage} {...props} />
            <Route exact path="/" component={HomePage} />
            <Route component={NotFoundPage} />
        </Switch>
    </Router>
)

export default withTracker((props) => {
    return {
        user: Meteor.user(),
        loggingIn: Meteor.loggingIn()
    }
})(Routes)

1 个答案:

答案 0 :(得分:1)

我明白了。文档显示loginWithFacebook接受redirectUrl属性。我只是将其设置为仪表板URL。用户登录后,将重定向到仪表板。

此处显示的示例是我创建的按钮组件的单击处理程序。当用户点击它们时,它们被重定向以接受Facebook应用程序权限,一旦完成,它们将被重定向到仪表板路径:

handleClick = () => {
    Meteor.loginWithFacebook(
        { 
            requestPermissions: this.props.permissions,
            loginStyle: this.props.loginStyle,
            redirectUrl: Meteor.absoluteUrl('dashboard'),
        },
        err => {
            // These will be unsed when using redirect flow
            if (err) return this.props.onError(err)
            return this.props.onSuccess()
        }
    )
}