基于 ReactJS firebase 角色的身份验证

时间:2021-07-12 09:22:32

标签: node.js reactjs firebase rbac

要么我没有正确搜索,要么没有足够的资源来完成这项工作。

我有 ReactJS 作为前端,firebase 和 nodejs 作为后端。 Firebase 只会负责注册和登录。我有两种类型的用户:

  1. 管理员
  2. 用户

是否可以使用基本的 CRA(create-react-app)项目来实现 RBAC?

还是我必须将凭据发送到我的 nodejs 后端并在那里处理 RBAC?

在我当前的 AuthContext 中:

const AuthContext = React.createContext()

export function useAuth() {
  return useContext(AuthContext)
}

export function AuthProvider({ children }) {
  const [currentUser, setCurrentUser] = useState()
  const [loading, setLoading] = useState(true)

  function signup(email, password) {
    return auth.createUserWithEmailAndPassword(email, password)
  }

  function login(email, password) {
    return auth.signInWithEmailAndPassword(email, password)
  }

  function logout() {
    return auth.signOut()
  }

  function resetPassword(email) {
    return auth.sendPasswordResetEmail(email)
  }

  function updateEmail(email) {
    return currentUser.updateEmail(email)
  }

  function updatePassword(password) {
    return currentUser.updatePassword(password)
  }

  useEffect(() => {
    const unsubscribe = auth.onAuthStateChanged(user => {
      setCurrentUser(user)
      setLoading(false)
    })

    return unsubscribe
  }, [])

  const value = {
    currentUser,
    login,
    signup,
    logout,
    resetPassword,
    updateEmail,
    updatePassword
  }

  return (
    <AuthContext.Provider value={value}>
      {!loading && children}
    </AuthContext.Provider>
  )
}

Role.js

export const Role = {
    Admin: 'Admin',
    User: 'User',
}

现在,如果我不能实现 RBAC,我将需要为每个用户类型创建两个集合,我认为这只会增加复杂性。

注意:我将使用自定义 API 来处理所有其他工作,因此 firebase 目前只会处理身份验证

0 个答案:

没有答案