• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 파이베이스 조건 함수 문제

파이베이스 조건 함수 문제

8 글 보임 - 1 에서 8 까지 (총 8 중에서)
  • 글쓴이
  • #110517

    박성현
    참가자
    선생님 말씀대로 파이어 베이스에 규칙을 추가하고 고구마로 회원 가입하여 글을 올리려고 하는데 에러가 발생합니다.
    \업로드된 경로는 https://firebasestorage.googleapis.com/v0/b/least-195a2.appspot.com/o/image%2F3.jpg?alt=media&token=2b68a8a7-a604-47da-9d0e-b6782486a268
    upload.html:68 FirebaseError: Missing or insufficient permissions.
        at new qr (prebuilt.js:184:9)
        at prebuilt.js:10609:34
        at yr.<anonymous> (prebuilt.js:10561:21)
        at Kt (eventtarget.js:351:23)
        at jt (eventtarget.js:481:12)
        at vr.ta (webchannelbasetransport.js:368:3)
        at Qe (webchannelbase.js:2219:25)
        at Ue (channelrequest.js:822:7)
        at N.Da (channelrequest.js:703:5)
        at N.bb (channelrequest.js:564:10)
    
    에러 내용이며 파이어 베이스 규칙은
    
    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        // 전체 읽기 권한은 여전히 주석 처리되어 있습니다. 원하면 주석 해제할 수 있습니다.
        // match /{document=**} {
        //   allow read: if true;
        //   allow write: if request.auth != null;
        // }
        match /product/{docid} {
          allow read: if true;
          allow write: if request.auth != null;
          allow update: if request.auth.uid == resource.data.uid;
        }
      }
    }
    
    이렇게 됩니다.
    
    업로드 코드는
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
    </head>
    <body>
      <nav id="navbar-example2" class="navbar bg-body-tertiary px-3 mb-3">
        세안정기
        <ul class="nav nav-pills">
          <!-- 나머지 네비게이션 바 코드는 동일하게 유지됩니다 -->
        
      </nav>
      
      <div class="container mt-3">
        <input type="text" class="form-control mt-2" id="title" placeholder="title">
        <textarea class="form-control mt-2" id="content">content</textarea>
        <input type="text" class="form-control mt-2" id="price" placeholder="price">
        <input class="form-control mt-2" type="file" id="image">
        <button class="btn btn-danger mt-3" id="send">올리기</button>
      </div>
      
      <div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-body-tertiary p-3 rounded-2" tabindex="0">
      </div>
      <script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-app.js"></script>
      <script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-firestore.js"></script>
      <script src="https://www.gstatic.com/firebasejs/8.6.5/firebase-storage.js"></script>
      <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
      
      <script>
        const firebaseConfig = {
          apiKey: "AIzaSyDhXipwML1Q6l0fUj7MeEau0SamKJdpsJ0",
          authDomain: "least-195a2.firebaseapp.com",
          projectId: "least-195a2",
          storageBucket: "least-195a2.appspot.com",
          messagingSenderId: "113456037188",
          appId: "1:113456037188:web:144286b9c1d391b1b9ab11"
        };
        const app = firebase.initializeApp(firebaseConfig);
        const db = firebase.firestore();
        const storage = firebase.storage();
        $('#send').click(function(){
          var file = document.querySelector('#image').files[0];
          var storageRef = storage.ref();
          var 저장할경로 = storageRef.child('image/' + file.name);
          var 업로드작업 = 저장할경로.put(file);
          업로드작업.on('state_changed', null, (error) => {
            console.error('실패사유는', error);
          }, () => {
            업로드작업.snapshot.ref.getDownloadURL().then((url) => {
              console.log('업로드된 경로는', url);
              var 저장할거 = { 
                제목: $('#title').val(),
                가격: $('#price').val(),
                내용: $('#content').val(),
                날짜: new Date(),
                이미지URL: url, // 업로드된 이미지의 URL을 저장합니다.
                uid: JSON.parse(localStorage.getItem('user')).uid,
                이름: JSON.parse(localStorage.getItem('user')).displayName,
              };
              db.collection('product').add(저장할거).then((result) => {
                console.log(result);
                window.location.href = "/index.html";
              }).catch((err) => {
                console.log(err);
              });
            });
          });
        });
      </script>
    </body>  
    이렇게 되어 있습니다
    
    
    #110549

    codingapple
    키 마스터
    allow write말고 allow create 해봅시다
    #110668

    박성현
    참가자
    allow create로 바꾸어도 똑같은 애러가 발생되었습니다.
    코드는 allow create 말고 똑같습니다
    #110683

    codingapple
    키 마스터
    로그인하고 글썼나 확인해봅시다
    #110890

    박성현
    참가자
     
    
    로그인도 되어있는데 안 됩니다문제
    #110891

    박성현
    참가자
     
    
    로그인도 되어있는데 안 됩니다문제
    #110925

    codingapple
    키 마스터
    로그인한 브라우저탭에서 글올려봅시다 코드는 별문제없어보여서 로그인여부 확인해봐야할듯요
    #111273

    박성현
    참가자
     접속에러1
8 글 보임 - 1 에서 8 까지 (총 8 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠