redux-auth-wrapper在身份验证后不会重定向

时间:2017-01-09 15:27:07

标签: react-router react-router-redux

我有以下反应路由器设置:

/

我想实现以下目标: 如果用户未经过身份验证并且正在访问根位置(/catalog/overview),则会显示登录屏幕,登录后,用户将重定向到目录视图。当用户访问其他位置(例如/catalog/overview)时,将提示用户登录,并且在成功进行身份验证后,用户将被重定向到state.get('user')

事情是:初始重定向工作正常。每当我尝试访问某个位置时,都会显示登录页面。所以我们可以说redirectAction正在运行。另外:authSelector工作正常,因为当我在console.log UserIsAuthenticated时,我得到通常处于我状态的用户对象。此外:当我从第一个IndexRoute导航中删除routerActions.replace时,导航工作正常。

当我登录时,我的Redux DevTools向我显示我的令牌已被设置,我希望我的react-router-redux import { Map } from 'immutable' import { USER_LOGGED_IN, USER_LOGGED_OUT } from './consts' export default function authenticationReducer ( state: Map<*, *> = Map({}), action: Object ) { switch (action.type) { case USER_LOGGED_IN: return state .set('token', action.payload.get('token')) case USER_LOGGED_OUT: return state .set('token', undefined) default: return state } } 能够响应。

我的userReducer.js:

const renderApp = () => {
  ReactDOM.render(
    <AppContainer>
      <MuiThemeProvider muiTheme={muiTheme}>
        <Provider store={store}>
          <Router history={history} routes={routes} />
        </Provider>
      </MuiThemeProvider>
    </AppContainer>,
    document.getElementById('root')
  )
}

这就是我加载路线的方式:

def is_attacked(x,y,n,chess_board)  
    return true if chess_board[x].include?(1)
    sum=x+y
    diff=x-y
    p=0 
    while p<=n-1
        return true if p!=x && chess_board[p][y]==1
        q=0

        while q<=n-1
            (((p+q==sum)||(p-q==diff)) && chess_board[p][q]==1) ? (return true) : q+=1
        end
    p+=1 
   end
   return false
end

def n_Queens(n,n_fix,chess_board)
    return true if n==0
    i=0 
    while i<=n_fix-1
        j=0
        while j<=n_fix-1
            if is_attacked(i,j,n_fix,chess_board)
                j+=1
                next
            else
                chess_board[i][j]=1
                n_Queens(n-1,n_fix,chess_board) ? (return true) : chess_board[i][j]=0
            end
            j+=1
        end
        i+=1
    end
    return false
end

n=gets.chomp.to_i
n_fix=n
chess_board=Array.new(n) {Array.new(n,0)}
if n_Queens(n,n_fix,chess_board)
    chess_board.each do |line|
        puts line.join(" ")
    end
else
    puts "Not possible"
end

如何在登录时重新触发这些路线?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我通过在Login组件render中添加重定向来修复它(与您的代码只有一个区别,我通过检查{{1}来检查用户是否已获得授权} prop,而不是user):

user.token
相关问题