Firebase의 신규 사용자 등록 금지

7263 단어 FirebaseFirebaseAuth

1. 요약


  • Firebase Authentication의 로그인 기능(EmailAuth)에서, signInOptions의 파라미터에 disableSignUp를 사용하면, UI 화면으로부터의 신규 유저의 등록을 제한할 수 있다.

  • 2. 문제


  • Firebase는 웹 앱 만들기에 편리하고 사용해 주고 있지만, 기본 로그인 기능 를 구현하면, 그대로라면 로그인 화면에서 마음대로 신규 유저 등록이 되어 로그인되어 버린다. SNS등은 이것으로 편리하지만, 조금 클로즈한 사이트등은 마음대로 들어와 주면 곤란하다.













  • 로그인 성공! ! !
  • 종래, 이것을 금지하는 방법으로서, 독자적으로 로그인 폼 만들거나 등록은 할 수 있어도 곧바로 무효화한다든지 여러가지 논의되거나 하고 있던 모습. 자세한 내용은 여기
  • 올해의 3월 정도에 signInOptions의 파라미터에 disableSignUp가 추가되어 있어 이것을 사용하면 OK 라고 판명(아래는 적용 결과)








  • * 한편, 상기의 설정 파일에서는 API 경유로의 등록은 제한할 수 없기 때문에, 별도 대책이 필요하다는 것.

    Note that this flag will only disable sign up from the UI and will not prevent sign up via REST API. It is highly recommended that Identity Platform projects enforce this policy via one of these 2 mechanisms:
    *Blocking functions: Set a beforeCreate trigger to disable sign up for email providers.
    *In the Cloud Console/Settings/USERS tab, uncheck Enable create (sign-up) checkbox. Though for this setting, sign up for all providers will be disabled.

    2. 구체적인 쓰기
    여기 에 「signInOptions에 추가해」라고 써 있는데, 어떻게 써야 할지 모르고 곤란했다.
    결국, 아래와 같이 signInOptions를 쓰면 좋다고 판명되었으므로 참고로 메모.
    disableSignUp: {status:true}⇒가 미소
    //4.8.0が必要とのこと
        <script src="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.js"></script>
        <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.8.0/firebase-ui-auth.css" />
    
    //・・・略・・・
    
    var uiConfig = {
          callbacks: {
            signInSuccessWithAuthResult: function(authResult, redirectUrl) {
            return true;
            },
            uiShown: function() {
            // The widget is rendered.
            // Hide the loader.
            document.getElementById('loader').style.display = 'none';
            }
          },
        signInFlow: 'popup',
        signInSuccessUrl: 'success.html',
        signInOptions: [{
          provider:firebase.auth.EmailAuthProvider.PROVIDER_ID,
          disableSignUp: {status:true}
        }
        ],
        // Terms of service url.
        tosUrl: 'terms-of-services.html',
        // Privacy policy url.
        privacyPolicyUrl: 'privacy-pocily.html'
    
    };
    
    
          var ui = new firebaseui.auth.AuthUI(firebase.auth());
          ui.start('#firebaseui-auth-container', uiConfig);
    
    //・・・以下略・・・
    
    

    설정을 반영하기 위해
    disableSignUp.status(true)
    토카
    disableSignUp.status=true
    라든지 여러가지 시도해 안된 결과, 2~3시간 걸려 버렸다.

    좋은 웹페이지 즐겨찾기