Знание личности пользователя необходимо для создания безопасных экосистем приложений, поскольку оно позволяет пользователям безопасно хранить данные в облаке и обеспечивать согласованный персонализированный опыт на всех устройствах.
Зачем использовать аутентификацию в моем приложении?
✅Аутентификация — важная мера безопасности для любого приложения. Это помогает гарантировать, что только авторизованные пользователи могут получить доступ к приложению, защищая конфиденциальные данные и предотвращая доступ злоумышленников.
✅ Аутентификация также помогает предотвратить внесение изменений в приложение или данные неавторизованными пользователями и может помочь защитить ваше приложение от вредоносных атак.
Почему реагировать?
✅Декларативный. React упрощает процесс создания интерактивных пользовательских интерфейсов, позволяя создавать простые представления для каждого состояния вашего приложения. Затем React будет эффективно обновлять и отображать необходимые компоненты при изменении ваших данных, делая ваш код более предсказуемым и легким для отладки.
✅На основе компонентов. Создавайте компоненты с собственным состоянием, а затем объединяйте их для создания сложных пользовательских интерфейсов. JavaScript позволяет передавать данные более эффективно, чем шаблоны, избавляя от необходимости хранить состояние в DOM.
React расширяет возможности приложений с помощью React Native и может запускаться на сервере с помощью node.
Почему аутентификация Firebase?
Firebase Authentication предлагает комплексные серверные службы, удобные SDK и готовые библиотеки пользовательского интерфейса для аутентификации пользователей в вашем приложении.
Он поддерживает аутентификацию с помощью паролей, номеров телефонов и популярных сторонних поставщиков удостоверений, таких как Google, Facebook и Twitter. Сервисы Firebase основаны на стандартных отраслевых протоколах, таких как OAuth 2.0 и OpenID Connect, что обеспечивает простую интеграцию с вашим пользовательским сервером.
Firebase AUTH с реакцией на электронную почту и пароль (ШАГИ)
Создайте проект Firebase
Перейдите на https://console.firebase.google.com и нажмите: Добавить проект.
Создайте React-приложение
Запустите эти команды на терминале, напишите в «my-new-app» название вашего приложения.
npx create-react-app my-new-app cd my-new-app npm start
Включить аутентификацию по электронной почте и паролю Firebase
Как работает простое веб-приложение, которое мы создаем сегодня?
Я использую не CSS, чтобы сосредоточиться только на логике и коде JavaScript.
firebase.js — файл
Получите конфигурацию Firebase в разделе Настройки проекта, добавив новое веб-приложение, чтобы получить собственные учетные данные.
// Import the functions you need from the SDKs you need import { initializeApp } from "firebase/app"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration // For Firebase JS SDK v7.20.0 and later, measurementId is optional const firebaseConfig = { }; // Initialize Firebase const app = initializeApp(firebaseConfig); export default app;
App.js — Файл
Мы создаем профиль с основными поставщиками AUTH, а также используем обмен сообщениями и Firestore. В этом примере вы будете использовать только Firebase AUTH.
import './App.css'; import { getAnalytics } from "firebase/analytics"; import { getMessaging, getToken, onMessage } from "firebase/messaging"; import {getAuth, signInAnonymously, onAuthStateChanged, signOut, signInWithEmailAndPassword} from "firebase/auth" import {ToastContainer, toast} from 'react-toastify' import app from './firebase'; import "react-toastify/dist/ReactToastify.css" import React from 'react'; import { Timestamp} from '@firebase/firestore'; //firestore dependencies import { doc, FieldValue, getDoc, getFirestore, serverTimestamp, setDoc, updateDoc, deleteDoc } from "firebase/firestore"; import { async } from '@firebase/util'; import SignIn from './SignIn'; import SignUp from './SignUp'; const analytics = getAnalytics(app); function App() { const [uid, setUid] = React.useState(""); const [signMode, setSignMode] = React.useState("signIn") const [validLogin, setValidLogin] = React.useState(false) const singUpAnonymously= ()=>{ signInAnonymously(getAuth(app)).then( user=> (setUid(user.user.uid), console.log(user.providerId)) ) } const db = getFirestore(app); const messaging = getMessaging(app); // Initialize Firebase Authentication and get a reference to the service const auth = getAuth(app); React.useEffect(()=>{ //singUpAnonymously(); console.log(uid) onMessage(messaging, message=>{ console.log("your message: ", message) toast(message.notification.title) // console.log("payload.data.url"+message.data.url) //window.location.replace("http://localhost:3000/"+message.data.url) }) if (uid!= "") { //CREATE DATA //setUserDoc(uid) //UPDATE DATA //updateUserDoc(uid) //READ DATA //getUserDoc(uid) //DELETE DATA }else{ console.log("not user uid") } },[validLogin]) function setSignModeF1 (){ setSignMode("signUp") } function setSignModeF2 (){ setSignMode("signIn") } function checkIfValidLogin(){ const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { // User is signed in, see docs for a list of available properties // https://firebase.google.com/docs/reference/js/firebase.User const uid = user.uid; //console.log(user.isAnonymous) if (validLogin == false){ setValidLogin(prevState => !prevState) } // ... } else { // User is signed out // ... } }); } checkIfValidLogin(); function signOutF(){ signOut(getAuth(app)).then( (validLogin == true? setValidLogin(prevState => !prevState) :console.log("ee") ) ) } return ( <div> <h1>Firebase Cloud Firestore</h1> <button onClick={setSignModeF1}>Sign Up</button> <button onClick={setSignModeF2}>Sign In</button> <br/> {signMode=="signIn"? <SignIn mode="Sign In"></SignIn>: <SignUp mode="Sign Up"></SignUp>} <ToastContainer/> {validLogin?<div><h2>Logged in</h2><button onClick={signOutF}>Sign Out</button></div>: <h2>Not logged in</h2> } </div> ); } export default App;
SignIn.js — Файл
import React, {Component} from "react"; import {getAuth, signInWithEmailAndPassword} from 'firebase/auth' import app from './firebase' function SignIn (props) { const auth = getAuth(app); const [email, setEmail] = React.useState(""); const [password, setPassword] = React.useState(""); function signInWEAP(){ signInWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; console.log(userCredential.user.uid) // ... }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; }); } const onChangeHandlerP = event => { setPassword(event.target.value); }; const onChangeHandlerE = event => { setEmail(event.target.value); }; return( <div><h1> {props.mode}</h1> <input onChange={onChangeHandlerE} value={email} type="email" placeholder="email"></input> <br></br> <input onChange={onChangeHandlerP} value={password} type="password" placeholder="password"></input> <br/> <button onClick={signInWEAP}>Sign In</button> </div>) } export default SignIn;
SignUp.js — Файл
import React, {Component} from "react"; import app from './firebase'; import {getAuth, createUserWithEmailAndPassword} from 'firebase/auth' function SignUp (props) { const auth = getAuth(app); const [email, setEmail] = React.useState(""); const [password, setPassword] = React.useState(""); function createUserWithEmailAndPasswordF(){ // if password is more than 8 characters long if (password.length>=8){ console.log("password lenght correct") }else{ console.log("password should be at least 8 characters long") return } createUserWithEmailAndPassword(auth, email, password) .then((userCredential) => { // Signed in const user = userCredential.user; // ... console.log("user created"+ userCredential.user.uid) }) .catch((error) => { const errorCode = error.code; const errorMessage = error.message; // .. }); } const onChangeHandlerP = event => { setPassword(event.target.value); }; const onChangeHandlerE = event => { setEmail(event.target.value); }; // Initialize Firebase Authentication and get a reference to the service return(<div><h1> {props.mode}</h1> <input onChange={onChangeHandlerE} value={email} type="email" placeholder="email"></input> <br></br> <input onChange={onChangeHandlerP} value={password} type="password" placeholder="password"></input> <br/> <button onClick={createUserWithEmailAndPasswordF}>Sign Up</button> </div> ); } export default SignUp;
Проверьте мой полный репозиторий GitHub для Firebase AUTH с адресом электронной почты и паролем здесь.
Это моя первая книга, которую я написал в научной фантастике для своей видеоигры:
Спасибо за прочтение!
Дополнительные материалы на PlainEnglish.io.
Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.