±âŸ(framework)
2018.03.21 / 01:56

Firebase Web äÆÃ¾Û ¸¸µé±â - Realtime Database ±ÇÇÑ ¼³Á¤

ÈÞ°í
Ãßõ ¼ö 230
¿©±â±îÁö µû¶ó¿À½Ã´À¶ó ¼ö°íÇϼ̽À´Ï´Ù. ÄÚµå´Â ¿Ï¼ºµÇ¾ú½À´Ï´Ù.  ¾Õ¼­µµ ¾ð±ÞµÇ¾úÁö¸¸, Firebase Realtime DatabaseƯ¼º»ó ±ÇÇÑ ¼³Á¤Àº ¹«Ã´ Áß¿äÇÕ´Ï´Ù. ƯÈ÷³ª À¥ÀÇ °æ¿ì´Â ¼­¹öÀÇ ÁÖ¿ä ·ÎÁ÷µéÀÌ Å¬¶óÀ̾ðÆ®¿¡¼­ µå·¯³ª±â ¶§¹®ÀÔ´Ï´Ù.

Realtime DatabaseÀÇ ±âº» ±ÇÇÑÀº Authentication ÀÎÁõ ¹Þ¾ÒÀ» ¶§ Àбâ¿Í ¾²±â Çã¿ëÀÔ´Ï´Ù.
database.rules.json ÆÄÀÏ¿¡ Realtime Database ±ÇÇÑÀÌ ÀԷµǾî ÀÖ½À´Ï´Ù. ÇØ´ç ÆÄÀÏÀ» ¹èÆ÷ÇÔÀ¸·Î½á ±ÇÇÑ Á¤º¸¸¦ ¾÷µ¥ÀÌÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Firebase console âÀ» ÅëÇؼ­µµ ±ÇÇÑ ·êÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. Firebase console È­¸é¿¡¼­ DatabaseÇ׸ñ ¿¡¼­ ±ÔÄ¢ ÅÇÀ¸·Î µé¾î°¡¸é  ±ÇÇÑÀ» º¯°æÇÒ ¼ö ÀÖ°í, ½Ã¹Ä·¹ÀÌÅÍ·Î Å×½ºÆ®µµ °¡´ÉÇÕ´Ï´Ù.




ÇÁ·ÎÁ§Æ® »ý¼ºÇÏ°í ³ª¼­ ±âº» ·êÀº Authentication ÀÎÁõ ¹Þ¾Æ¾ß¸¸ Àбâ¿Í ¾²±â°¡ °¡´ÉÇÑ ·êÀÔ´Ï´Ù.

{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
view rawdatabase.rules.json hosted with ❤ by GitHub




±âº»ÀûÀÎ rule À¯ÇüÀÔ´Ï´Ù. 

±ÔÄ¢ À¯Çü
.read
»ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ÀÐÀ» ¼ö ÀÖ´Â Á¶°ÇÀ» ±â¼úÇÕ´Ï´Ù.
.write
»ç¿ëÀÚ°¡ µ¥ÀÌÅ͸¦ ¾µ ¼ö ÀÖ´Â Á¶°ÇÀ» ±â¼úÇÕ´Ï´Ù.
.validate
°ªÀÇ ¿Ã¹Ù¸¥ Çü½Ä, ÇÏÀ§ ¼Ó¼ºÀ» °®´ÂÁö ¿©ºÎ ¹× µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇÕ´Ï´Ù.
.indexOn
Á¤·Ä ¹× Äõ¸®¸¦ À§ÇØ »öÀÎÈ­ÇÒ ÇÏÀ§ Ç׸ñÀ» ÁöÁ¤ÇÕ´Ï´Ù.

·ê°ú ÇÔ²² Á¤ÀÇÇÒ ¶§ »ç¿ëµÇ´Â »çÀü Á¤ÀÇµÈ º¯¼ö ÀÔ´Ï´Ù.

»çÀü Á¤ÀÇµÈ º¯¼ö
Linux ±âÁ¡À» ±âÁØÀ¸·Î ÇÏ´Â ÇöÀç ½Ã°£(¹Ð¸®ÃÊ)ÀÔ´Ï´Ù. SDKÀÇ firebase.database.ServerValue.TIMESTAMP·Î »ý¼ºÇÑ Å¸ÀÓ½ºÅÆÇÁ¸¦ °ËÁõÇÏ´Â µ¥ ƯÈ÷ À¯¿ëÇÕ´Ï´Ù.
ÀÛ¾÷ ½Ãµµ Àü¿¡ Firebase µ¥ÀÌÅͺ£À̽º¿¡ Á¸ÀçÇÑ ·çÆ® °æ·Î¸¦ ³ªÅ¸³»´Â RuleDataSnapshotÀÔ´Ï´Ù.
ÀÛ¾÷ ½Ãµµ ÈÄ¿¡ Á¸ÀçÇÒ µ¥ÀÌÅ͸¦ ³ªÅ¸³»´Â RuleDataSnapshotÀÔ´Ï´Ù. »õ·Î ±â·ÏµÇ´Â µ¥ÀÌÅÍ¿Í ±âÁ¸ µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÕ´Ï´Ù.
ÀÛ¾÷ ½Ãµµ Àü¿¡ Á¸ÀçÇÑ µ¥ÀÌÅ͸¦ ³ªÅ¸³»´Â RuleDataSnapshotÀÔ´Ï´Ù.
ID ¹× µ¿Àû ÇÏÀ§ Å°¸¦ ³ªÅ¸³»´Â µ¥ »ç¿ëµÇ´Â ¿ÍÀϵåÄ«µå °æ·ÎÀÔ´Ï´Ù.
ÀÎÁõµÈ »ç¿ëÀÚÀÇ ÅäÅ« ÆäÀ̷ε带 ³ªÅ¸³À´Ï´Ù.

Á¦°¡ Àû¿ëÇÑ ·êÀÔ´Ï´Ù. 

{
"rules": {
"FcmId": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
},
"Users": {
".read": "auth != null",
"$uid": {
".read": "auth != null",
".write": "$uid === auth.uid"
}
},
"UsersConnection": {
".read": "auth != null",
".write": "auth != null"
},
"Messages": {
"$roomId" : {
".read": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",
".write": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",
"$msgId" :{
".read": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",
".write": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()"
}
}
},
"UserRooms" :{
"$uid":{
".read": "$uid === auth.uid",
"$roomId" :{
".read" : "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",
".write": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()"
}
}
},
"RoomUsers" :{
"$roomId":{
"$uid":{
".read": "auth != null",
".write": "auth != null"
}
}
}
}
}
view rawdatabase.rules.json hosted with ❤ by GitHub




Àúµµ ´õ ¿¬±¸Çؼ­ ´õ¿í ¼¼¼¼ÇÏ°Ô ±ÇÇÑÀ» Áà¾ßÇÏ°ÚÁö¸¸, ÀÏ´Ü Ã¤Æþۿ¡¼­ °¡Àå ÇÙ½ÉÀ̵Ǵ Messages ºÎºÐÀº 
RoomUsers¾Æ·¡ äÆù濡 ÀοøÀ¸·Î µî·ÏµÇ¾î ÀÖÁö ¾ÊÀ¸¸é Àбâ¿Í ¾²±â°¡ ±ÝÁöµÇ¾î ÀÖ½À´Ï´Ù.
".read": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",
 ".write": "root.child('RoomUsers').child($roomId).child(auth.uid).exists()",


äÆÃ¹æ ¸ñ·Ï¿¡ ÇØ´çÇÏ´Â UserRooms´Â ±× ¾Æ·¡ Å°ÀÎ uid´Â º»Àΰ͸¸ ÀÐÀ» ¼ö ÀÖ°Ô Çã¿ëµÇ¾î ÀÖ½À´Ï´Ù.
".read": "$uid === auth.uid",

±ÇÇÑ ºÎºÐÀº Á¶±Ý ´õ °í¹ÎÀÌ ÇÊ¿äÇÑ ºÎºÐÀÌ ÀÖ´Â µí ÇÕ´Ï´Ù. 

ºÎÁ·ÇÏÁö¸¸ Firebase äÆÃ¾Û ¿¹Á¦°¡ ¸¶¹«¸®µÇ¾ú½À´Ï´Ù. ºÎÁ·ÇÑÁ¡µµ ¸¹ÀÌ ÀÖÀ» µí ÇÕ´Ï´Ù. ºÎÁ·ÇÑ Á¡ÀÌ º¸À̸é Çǵå¹é ºÎŹµå¸³´Ï´Ù~

¿Ï¼ºµÈ ¼Ò½º´Â ¾Æ·¡ÀÇ ¸µÅ©¿¡¼­ È®ÀÎ °¡´ÉÇÕ´Ï´Ù.  






  1. ¿¹Á¦ ¼Ò°³
  2. Firebase ¼³Á¤Çϱâ
  3. HostingÀ» È°¿ëÇÑ ÇÁ·ÎÁ§Æ® Áغñ ÀÛ¾÷
  4. AuthenticationÀ» ÀÌ¿ëÇÑ À¯Àú °¡ÀÔ ¹× ·Î±×ÀÎ ±¸ÇöÇϱâ
  5. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - Reatime Database Ư¡ ¹× µ¥ÀÌÅÍ ±¸Á¶
  6. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - À¯Àúµ¥ÀÌÅÍ ÀúÀåÇϱâ
  7. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - À¯Àú¸®½ºÆà ȭ¸é
  8. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆÃÈ­¸é ¹× äÆø޼¼Áö ¸®½ºÆÃ
  9. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆø޼¼Áö Àü¼Û±â´É
  10. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆÃ¹æ ¸®½ºÆÃÈ­¸é
  11. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆùæ ÃÊ´ë ±â´É
  12. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - Á¢¼Ó ÁßÀÎ À¯Àú Ç¥½ÃÇϱâ
  13. Storage¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ Àü¼Û±â´É
  14. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - FCM Token Á¤º¸ ÀúÀå
  15. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - Functions¸¦ ÅëÇÑ FCM ¹ß¼Û
  16. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - Service worker¸¦ ÀÌ¿ëÇÑ FCM¼ö½Å
  17. Realtime Database ±ÇÇÑ ¼³Á¤

 



Ãâó: http://cionman.tistory.com/67 [Suwoni-Codelab]