redux-auth-wrapper重定向不起作用

时间:2017-03-02 20:12:08

标签: redux react-router react-router-redux

我使用redux-auth-wrapper处理路由逻辑以进行受保护路由的身份验证。但是,它没有重定向。

我的用户"状态中的对象具有以下形状:

// state.auth

{
    isAuthenticated: true,
    isLoading: false,
   loadError: null
}

这是我的routes/index.js文件

const authenticated = UserAuthWrapper({
    authSelector: state => state.auth,
    predicate: authData => authData.isAuthenticated,
    redirectAction: routerActions.replace,
    // redirects to /login by default
})

export default (
    <Route path="/" component={App}>
        <IndexRoute component={authenticated(Secret)} />
        <Route path="/login" component={Login} />
        <Route path="/item_1" component={Item1} />
        <Route path="/item_2" component={Item2}>
            <Route path="/nested_item_2/:id" component={NestedItem2} />
        </Route>
    </Route>
)

我的IndexRoute是受保护的组件,因此当我转到localhost:3000时,我希望它将我重定向到/login,但没有任何反应。它只停留在具有空体的Secret组件上。

1 个答案:

答案 0 :(得分:2)

得到了同样的问题,并找到了解决方案。你可能已经发现了它,但它在这里:

您必须在代码中使用此方法才能重定向:

import { createStore, applyMiddleware } from 'redux'
import { browserHistory } from 'react-router'
import { routerMiddleware } from 'react-router-redux'

import rootReducer from './reducers.js'

const middleware = routerMiddleware(browserHistory);

const store = createStore(
    rootReducer,
    preloadedState,
    applyMiddleware(middleware)
);

传递给createStore()的第三个参数是强制

我找到了github topic的答案,请随时查看更多详细信息。 注意:Ctrl + F:“codereviewvideos”以获得正确答案;)

希望它有所帮助!