1

vuejs 애플리케이션을 구축 중이고 firebase 인증을 앱에 추가하려고합니다. 나는 뉴스 시스템을 위해 클라우드 파이어 스토어를 사용했다.Firebase Cloud firestore + auth : 로그인 한 사용자 만 쓰기

는 이제 "뉴스를 추가"페이지에 나는에서 사용자를 로그인하거나 뭔가 잘못된 경우에 그에게 피드백을 제공

firebase.auth().signInWithEmailAndPassword("[email protected]", "mypassword").catch(function (error) { 
    console.log(error.code); 
    console.log(error.message); 

    if (errorCode === 'auth/wrong-password') { 
    alert('Wrong password.'); 
    } else { 
    alert(errorMessage); 
    } 
}); 

를 호출합니다.

나중에 나는 경우 FireStore 규칙에서이

irestore.collection("news").doc().set({ 
    date: today, 
    title: "Hello", 
    text: "A think I am a news!" 
}); 

같은 클라우드 경우 FireStore에 데이터를 쓰고 나는 뉴스 컬렉션에

allow read, write: if request.auth != null; 

을 설정 - 그래서 그것은 단지 로그인 한 사용자에 대한 쓰기 권한을 부여해야합니다 , 권리?

이제 일 : 내가 잘못된 암호를 사용하여 로그인하는 경우, 중포 기지가 (? 그래서 우리가있는 우리에 기록되지 않음) 암호가 잘못했다, 다시 제공 하지만 데이터가 어쨌든 경우 FireStore에 기록됩니다. 나는 무엇을 잘못 했는가? 사용자가 어떤 방법을 통해 로그인 한 경우

enter image description here

답변

1

규칙 request.auth != null 확인합니다. 두 가지 방법으로 기호에 대한 클라이언트 측에서 확인할 수 있습니다

동기화 :

// Synchronously check for current user 
var user = firebase.auth().currentUser; 

if (user) { 
    // User is signed in. 
} else { 
    // No user is signed in. 
} 

비동기 :

// Listen for current user status 
firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 

당신이 user을받을 경우는 다음 null 될하지 request.auth을 기대할 수 있습니다.

관련 문제