仅在具有某些电子邮件结尾的用户中在React App中注册

时间:2019-03-25 09:31:19

标签: reactjs

我只想允许具有特定结尾的电子邮件用户在我的应用程序中注册。例如,仅以@ tm.com结尾的用户。无需手动创建必须始终更新的“白名单”,是否可以做到这一点? 我的应用已连接到Firebase。

 import firebase from '../configureFirebase'
import * as types from '../constants/ActionTypes'
import {actionStart, actionFailed, actionSuccess} from './utils/template'

export const register = (email, password) => {
  return function(dispatch) {
    dispatch(actionStart(types.REGISTER))
    const promise = firebase.auth().createUserWithEmailAndPassword(email, password)
    promise.then((user) => {
      dispatch(actionSuccess(types.REGISTER, {user: user}))
    })
    .catch(function(error) {
      let errorMessage

      switch (error.code) {
        case 'auth/weak-password':
          errorMessage = 'Passwort zu schwach'
          break
        default:
          errorMessage = error.message
      }
      dispatch(actionFailed(types.REGISTER, errorMessage))
    })
    //return promise so github.com/arnaudbenard/redux-mock-store works
    return promise
  }
}

1 个答案:

答案 0 :(得分:0)

您应该考虑将其添加到Firebase中,而不是应用程序的前部。在Firebase中有针对该规则的规则,可让您限制对特定用户的访问。这是一个@tm.com域规则的小例子。

{
  "rules": {
    ".read": "auth != null",
    "restrictedUsers": {
      "$uid": {
        ".write": "auth.token.email_verified == true && auth.token.email.matches(/.*@tm.com$/)"
      }
    }
  }
}

他们在auth.token部分Firebase

中提供了一个示例

然后,您将避免在应用程序的顶部列出列表。 这里有一些好处:

  • 不要重建
  • 不要将域公开给用户
  • 更安全
  • 您可以将其直接更新到firebase