Firebaseの新規ユーザ登録を禁止する
1.まとめ
- Firebase Authenticationのログイン機能(EmailAuth)で、signInOptionsのパラメータにdisableSignUpを使えば、UI画面からの新規ユーザの登録を制限できる。
2.問題
- Firebaseはウェブアプリ作るのに便利で使わせてもらっているが、デフォルトのログイン機能を実装すると、そのままだとログイン画面で勝手に新規ユーザ登録がされてログインされてしまう。SNS等はこれで便利だが、ちょっとクローズなサイトなどは勝手に入ってきてもらうと困る。
- 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時間かかってしまった。
Author And Source
この問題について(Firebaseの新規ユーザ登録を禁止する), 我々は、より多くの情報をここで見つけました https://qiita.com/niship2/items/2a4a9a13f1aa2fadb9b4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .