首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase9 -如何限制未注册用户登录?

Firebase9 -如何限制未注册用户登录?
EN

Stack Overflow用户
提问于 2022-09-30 07:32:13
回答 1查看 51关注 0票数 2

我正在使用React实现Firebase,这是我第一次使用上下文,所以我的问题是如何限制未注册的用户注册?现在,当我用一些随机的电子邮件登录时,它会把我转到主页

这就是我所拥有的

firebase配置:

代码语言:javascript
复制
const firebaseConfig = {
  apiKey: XXXXXXXXXX,
  authDomain: XXXXXXXXXX,
  projectId: XXXXXXXXXX,
  storageBucket: XXXXXXXXXX,
  messagingSenderId: XXXXXXXXXX,
  appId: XXXXXXXXXX,
};

const app = initializeApp(firebaseConfig);
export const authentication = getAuth(app);

上下文:

代码语言:javascript
复制
const UserContext = createContext();

export const AuthContextProvider = ({ children }) => {
  const [user, setUser] = useState({});

  const createUser = (email, password) => {
    createUserWithEmailAndPassword(authentication, email, password);
  };
  const signUser = (email, password) => {
    signInWithEmailAndPassword(authentication, email, password);
  };

  const logOut = () => {
    return signOut(authentication);
  };

  useEffect(() => {
    const unsubscribe = onAuthStateChanged(authentication, (currenUser) => {
      setUser(currenUser);
    });
    return () => {
      unsubscribe();
    };
  }, []);

  return (
    <UserContext.Provider value={{ createUser, signUser, user, logOut }}>
      {children}
    </UserContext.Provider>
  );
};

export const UserAuth = () => {
  return useContext(UserContext);
};

登入网页:

代码语言:javascript
复制
const SignIn = ({ navigation }) => {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [showErr, setShowErr] = useState('');

  const { user, signUser } = UserAuth();

  const handleSignIn = async () => {
    try {
      await signUser(email, password);
      
        navigation.navigate('Home');
      
    } catch (e) {
      console.log(e.message);
    }
  };

  return (
    <View
    {...}
    </View>
  );
};

export default SignIn;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 09:26:48

正如您可能经历过的那样,您不能阻止(不想要的)用户注册您的应用程序(例如,您可以很容易地获得项目API密钥并将其与Auth REST API一起使用)。

一个常见的解决方案是为每个“注册”用户分配一个特定的海关索赔,并在应用程序使用的Firebase服务的安全规则中使用此声明。

您不解释什么是注册用户,所以我不能共享一些代码,但是我们通常使用云函数来分配自定义声明。因此,您将需要调整您的入职工作流程,以便通过云函数包含处理。

这个文章可能对你有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73905400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档