存储用户授权做出反应

时间:2017-06-06 10:44:25

标签: reactjs firebase react-router firebase-authentication react-redux

我正在寻找一种方法,当用户授权时,我存储SQLiteDataReader r= command.ExecuteReader(); while (reader.Read()) { DataRow dataRow = new DataRow(); for (int i = 0; i < l.Count; i++) { dataRow[listCols[i]] = r[i]; } dt.Rows.Add(dataRow); } where 'l' is list of DataColumn ,所以每次我都可以检查用户是否user authorized status。但是,当我执行以下代码时,用户未获得授权:(Master.jsx - &gt; render())

authorized

我通过<Route exact path="/" render={() => { console.log('this.props.authed: ', this.props.authed, "this.props: ", this.props) return ( this.props.authed ? <Home /> : <Redirect from="/" to="/login"/> )} }/> 中的firebase检查用户授权,并将其存储为以下代码:(Master.jsx - &gt; componentWillMount())

componentWillMount()

问题是componentWillMount = () => { firebaseAuth().onAuthStateChanged((user) => { if (user) { this.props.login(user) } else { this.props.logout() } }) } 之后会componentWillMount执行,因此用户将在<Route ..之后获得授权。我有办法解决它吗?

1 个答案:

答案 0 :(得分:0)

这是react-redux的经典用例。我建议在服务器端处理所有身份验证,其中服务器响应授权或未授权用户的真或假。在此之前,您可以在UI上显示加载图标。

但是,如果您想继续并希望在UI上验证用户身份,请查看react-redux。

基本上你必须这样做

用户登录时

  1. 在action.js
  2. 中发送logIn操作
  3. 在您的reduce.js中捕获logIn操作并将用户凭据存储在商店中
  4. 当用户重新加载/打开页面时

    1. 在action.js
    2. 中发送isLoggedIn操作
    3. 减少isLoggedIn操作并检查用户是否已退出该状态。如果是,则返回允许程序继续。如果不是,请让用户再次登录。
    4. 希望有所帮助!