จากคำตอบของ prufrofro และ Frank van Puffelen ที่นี่ฉันรวบรวมการตั้งค่านี้ที่ไม่ป้องกันการคัดลอกแต่สามารถทำให้ยากขึ้นเล็กน้อยในการใช้คีย์ API ของคุณ
คำเตือน:หากต้องการรับข้อมูลของคุณแม้จะใช้วิธีนี้ก็สามารถเปิดคอนโซล JS ใน Chrome แล้วพิมพ์:
firebase.database().ref("/get/all/the/data").once("value", function (data) {
console.log(data.val());
});
กฎความปลอดภัยฐานข้อมูลเท่านั้นที่สามารถปกป้องข้อมูลของคุณได้
อย่างไรก็ตามฉัน จำกัด การใช้คีย์ API การผลิตของฉันในชื่อโดเมนของฉันเช่นนี้:
- https://console.developers.google.com/apis
- เลือกโครงการ Firebase ของคุณ
- หนังสือรับรอง
- ภายใต้คีย์ API ให้เลือกรหัสเบราว์เซอร์ของคุณ ซึ่งควรมีลักษณะดังนี้: " คีย์เบราว์เซอร์ (สร้างโดยอัตโนมัติโดย Google Service) "
- ใน " ยอมรับการร้องขอจากผู้อ้างอิง HTTP เหล่านี้ (เว็บไซต์) " เพิ่ม URL ของแอปของคุณ (กันตัวอย่าง:
projectname.firebaseapp.com/*
)
ตอนนี้แอปจะทำงานกับชื่อโดเมนเฉพาะนี้เท่านั้น ดังนั้นฉันจึงสร้างรหัส API ใหม่ที่จะเป็นส่วนตัวสำหรับการพัฒนา localhost
- คลิกสร้างข้อมูลรับรอง> รหัส API
โดยค่าเริ่มต้นดังกล่าวโดยมานูเอลโปสFirebase ขาวเท่านั้นlocalhost
และโฮสติ้งโดเมน Firebase ของคุณ
เพื่อให้แน่ใจว่าฉันจะไม่เผยแพร่คีย์ API ผิดโดยไม่ได้ตั้งใจฉันใช้วิธีการใดวิธีการหนึ่งต่อไปนี้เพื่อใช้รหัสที่ถูก จำกัด มากขึ้นในการผลิตโดยอัตโนมัติ
การตั้งค่าสำหรับแอป Create-React
ใน/env.development
:
REACT_APP_API_KEY=###dev-key###
ใน/env.production
:
REACT_APP_API_KEY=###public-key###
ใน /src/index.js
const firebaseConfig = {
apiKey: process.env.REACT_APP_API_KEY,
// ...
};
การตั้งค่าก่อนหน้าของฉันสำหรับ Webpack:
ฉันใช้ Webpack เพื่อสร้างแอปพลิเคชันการผลิตของฉันและฉันใส่คีย์ dev API ของฉันไว้ในที่index.html
เดียวกับที่คุณทำตามปกติ จากนั้นในwebpack.production.config.js
ไฟล์ของฉันฉันจะแทนที่กุญแจทุกครั้งที่index.html
คัดลอกไปยังบิลด์การผลิต:
plugins: [
new CopyWebpackPlugin([
{
transform: function(content, path) {
return content.toString().replace("###dev-key###", "###public-key###");
},
from: './index.html'
}
])
]