如何用变量替换firebase UID?

时间:2017-11-19 14:45:23

标签: reactjs firebase firebase-authentication

我正在尝试创建一个ERP类型的应用程序,管理员可以通过GUI将事物分配给数据库中的特定用户。因此,我想使用带有名称变量的auth.createUserWithEmailAndPassword替换firebase生成的随机UID,我在登录中提供了一个名称输入,员工可以在其中输入其名称。用这个名称替换UID的最佳方法是什么?

我在使用React.js这里有一些代码片段:

我的auth.js:

import { firebase } from '../firebase/firebase';


export const login = (uid) => ({
  type: 'LOGIN',
  uid
});

export const newUser = () => {
  const username = username.value;
  const pass = password.value;
  const auth = firebase.auth();

  const promise = auth.createUserWithEmailAndPassword(username, pass);
  promise.catch(e => console.log(e.message));
};

export const startLogin = (username, password) => {
  return () => {
  const username = username.value;
  const pass = password.value;
  const auth = firebase.auth();

  const promise = auth.signInWithEmailAndPassword(username, pass);
  promise.catch(e => console.log(e.message));
  };
};

export const logout = () => ({
  type: 'LOGOUT'
});

export const startLogout = () => {
  return () => {
    return firebase.auth().signOut();
  };
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

如果您还需要其他任何帮助我,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:0)

Firebase身份验证用户可能会考虑使用display name。对于来自社交提供商的用户帐户,这是您在那里提供的名称。例如:如果Firebase身份验证支持Stack Overflow作为身份提供商,则您的UID可能为8603299,您的显示名称为&#34; Bruce Evens&#34;。

要注意的一些事项:

  • 用户的显示名称不必是唯一的。任何人都可以说他们的名字是&#34; Bruce Evens&#34;。因此,虽然您可以将名称用作友好描述,但您无法使用该名称来唯一地查找用户。如果要确保唯一的用户名,您需要在某处保留映射。执行此操作的常见位置是Firebase实时数据库。有关示例,请参阅these questions
  • 用户的显示名称可能会随时间而变化。例如,我已经&#34; puf&#34;这里是Stack Overflow,但现在是#34; Frank van Puffelen&#34;。这会导致潜在的问题:如果人们在问题/评论中将我标记为@puf,那么这是我的显示名称,那么该标记现在将不再链接到我的帐户。为防止出现此类问题,您必须在用户更改其显示名称时更新所有引用。我已经介绍了here的基本选项。