少し話を戻しますが、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
}
});
それが役立つことを願っています!