4

私は Firebase を初めて使用し、電子メール/パスワードを使用して簡単な認証システムをセットアップしようとしています。最初のコンセプトは単純です。登録します。次に、ログインした後、モバイル アプリの残りの部分にアクセスできます。

以前は、PHP を使用してほんの数分でこれをセットアップできました。しかし、Firebase では、これは勝てそうにない戦いになりました。

Firebase のサイトにある簡単なドキュメントを使用して、ようやくユーザーの登録と認証に成功しました。偉大な。

残念ながら、ユーザーはログインしているかどうかにかかわらず、引き続きアプリの残りの部分にアクセスできます。認証されていないユーザーからアプリを保護するにはどうすればよいですか?

また、ページで送信されたデータを認証済みユーザーに関連付けるにはどうすればよいですか?

Firebaseのドキュメントを見てきました。認証の実用的な例が不足しています。Firefeed アプリをサンプルとして参照し続けます。Firefeed のコードを調べたところ、認証システムは 1) ログイン システムとしては非常に複雑であり、2) ニュース フィードとの結び付きが複雑すぎて、実際の例として学習することができませんでした。

一方で、明らかに根本的な何かが欠けているのかもしれません。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです. ありがとう!:-)

(ちなみに、Firebase のサイトで提案されているように、この質問を firebase-talk@googlegroups.com に電子メールで送信しようとしましたが、Google からの返送メッセージによると、このグループは存在しないようです。)

4

2 に答える 2

10

少し話を戻しますが、Firebase Simple Login はFirebase Custom Loginの上に利便性のために構築された抽象化であることに注意してください。必要に応じて、カスタム ログインを使用して既存の認証を Firebase で引き続き使用できます。

Firebase Simple Login を使用すると、認証のためだけにサーバーを実行する必要がなくなります。ただし、すべてのロジック、テンプレートなどはクライアント側のコードに存在するため、サーバー上で検出されたセッションに基づいてサーバーが要求アクセスを管理する PHP の例と 1 対 1 で対応するものはありません。

ほとんどの場合、クライアント側のロジック、テンプレート、アセットなどは静的で公開されます。あなたが本当に保護しようとしているのはユーザーとアプリケーションのデータであり、ここで Firebase Authentication (Simple Login または Custom Login のどちらを使用する場合でも) の出番です。Firebase Authentication は基本的にトークンの生成です。なりすましができないようにFirebase。

Firebase データ ツリー内のさまざまなパスへの読み取り/書き込みアクセスは、Firebase セキュリティ ルールによって管理されます。これにより、JavaScript のような式を記述して、どのクライアントがどのデータにアクセスできるかを制御できます。

次に例を示します。

各ユーザーが などのユーザー ID でキー付けされているユーザー リストがあり/users/<user-id>/<data>、ログインしているユーザーだけが自分のデータを読み書きできるようにしたいとします。シンプルログインで、これは本当に簡単です!

電子メール/パスワード認証ドキュメントの 認証後のセクションを見ると、セキュリティ ルールの変数には、認証後にユーザーの一意のユーザー IDauthを含む多くのフィールドが含まれていることがわかります。idこれで、セキュリティ ルールを記述できます。

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$userid": {
        ".read": "auth != null && auth.uid == $userid",
        ".write": "auth != null && auth.uid == $userid"
       }
    }
  }
}

何が起きてる?Firebase Authentication (Simple Login を使用) は、ログイン時に検証済みのユーザー データを含むトークンを安全に生成し、そのトークン データはauth、接続の変数を介してセキュリティ ルールで使用できるようになります。現在、クライアント接続で の読み取りまたは書き込みを行う/users/xyzには、ユーザーが認証され、 user として認証される必要がありますxyz

上記のほとんどはセキュリティ クイックスタートでカバーされていますが、理解するのが少し難しいことは確かです。

最初の質問に戻ると、ユーザーが認証されていないときに特定のパスからリダイレクトしたい場合は、次のことができます。

var ref = new Firebase(...);
var auth = new FirebaseSimpleLogin(ref, function(error, user) {
  if (!user) {
    // we're logged out, so redirect to somewhere else
  } else {
    // we're logged in! proceed as normal
  }
});

それが役立つことを願っています!

于 2013-12-30T16:00:49.613 に答える
2

ご注意ください:

ログインは Firebase のコア機能になりました。Simple Login は廃止され、このクライアントのドキュメントは Github で入手できるようになりました。

詳細については、このページを参照してください: https://www.firebase.com/docs/web/guide/user-auth.html

于 2014-10-09T14:21:27.310 に答える