Reactjs 在身份验证检查中响应管理员调度操作

Reactjs 在身份验证检查中响应管理员调度操作,reactjs,redux-saga,react-admin,Reactjs,Redux Saga,React Admin,当用户登录时,我得到了用户的信息,并将其令牌保存到localstorage,并通过customSaga将帐户信息保存到global store 当用户重新加载页面时,react admin将发送一个操作AUTH_CHECH,因此我通过本地存储令牌登录用户,然后将其帐户信息保存到存储,最好的解决方案如下: // in authProvider case AUTH_CHECK: if (token) { return httpClient.loginWithToken() .th

当用户登录时,我得到了用户的信息,并将其令牌保存到localstorage,并通过customSaga将帐户信息保存到global store

当用户重新加载页面时,
react admin
将发送一个操作
AUTH_CHECH
,因此我通过本地存储令牌登录用户,然后将其帐户信息保存到存储,最好的解决方案如下:

// in authProvider
case AUTH_CHECK:
  if (token) {
    return httpClient.loginWithToken()
    .then(account => store.dispatch({USER_LOGIN_SUCCESS, payload: account}))
  } else {
    return history.push('/login')
  }
但是作为一名演员,我应该看一些动作,写一些故事来观看:

yield takeEvery(USER_CHECK, function * (payload) {
  // console.log(payload)
  // this will be something like: {route: "dashboard", routeParams: undefined}, and I cannot customized this payload 
  // in fact, even I can customized AUTH_CHECK payload, this will not solve my problem, because auth check is a promise, when action AUTH_CHECK dispathed, the result still not fetched.
  yield put({type: USER_LOGIN_SUCCESS, userAccount})
  })
react admin
不导出他的店铺:

那么如何解决这个问题呢


谢谢

我不确定是否理解,请随意更正:当用户重新加载页面时,它会保持日志记录?否。因为我使用的http客户端(websocket客户端)是
asteroid
,它有一个
resumeLogin
方法,但没有公开,我无法完成登录。我用叉子把
resumeLogin
方法作为承诺。所以我使用了here:
return asteroid.resumeLogin()。然后(account=>blabla)
-------------------------------------------------------------------------------------------甚至我使用其他http客户端,重新加载一些页面,仍然没有登录,对吗?我不想使用本地缓存令牌作为使用登录。我不确定是否理解,请随意更正:当用户重新加载页面时,它会保持登录状态?不。因为我使用的http客户端(websocket客户端)是
asteroid
,它有一个
resumeLogin
方法,但没有公开,我无法完成登录。我用叉子把
resumeLogin
方法作为承诺。所以我使用了here:
return asteroid.resumeLogin()。然后(account=>blabla)
-------------------------------------------------------------------------------------------甚至我使用其他http客户端,重新加载一些页面,仍然没有登录,对吗?我不想使用本地缓存令牌作为使用登录。