2016-12-08 6 views
0

私の問題:私はクライアントとして、指定されたuidでログインしていることをサーバに証明する方法はありますか?

私のウェブサイトから新しいユーザーを作成することはできません。これは、大文字であるが、/users/myidの下のリアルタイムデータベースで「isAdmin」フラグがtrueに設定されている場合。

一般的に私はセキュリティルールでこれを行っていましたが、ここでの問題はadmin SDKを使用する必要があることです。通常のcreateNewUserメソッドは新しく作成されたユーザーに自動的にサインインするからです。しかし私は管理者として、新しいユーザーを作成して自分自身としてログインしたいと思っています。だから私がやるべきことは、自分のサーバに、自分のuidと作成されるべき新しいユーザデータを使ってajax投稿要求を使うことです。私のサーバーは、指定されたuidにisAdminフラグがあるかどうかをチェックし、そうであれば、そのようなメソッドを提供するfirebase admin SDKでユーザーを作成します。

ただし、管理者のuidがあれば誰でもそのリクエストを受け取り、新しいユーザーを作成できます。 (私のクライアントは、他のユーザからuidを確実に取得する)。

それで、私は実際にそのuidでログインしていることをサーバーに証明するにはどうしたらいいですか? 私の理解では、トークンはデータベースに書き込むことができるように使われていますが、そのアクセス権は必要ありません。実際にそのuidで実際にログインしていることを証明する必要があります。 私には何かがありますか?ありがとう、たくさんの人!

答えて

2

私はより簡単でした。

firebase.auth().currentUser.getToken(true).then(function(token) { 
     // send request to server with generated token 
    }).catch(function(error) { 
     // handle error 
    }); 

私はそのようにように、サーバー上で確認することができます:

admin.auth().verifyIdToken(idToken) 
    .then(function(decodedToken) { 
    var uid = decodedToken.uid; 
    // user is logged in 
    }).catch(function(error) { 
    // user is not logged in, or other error occured 
    }); 

https://firebase.google.com/docs/auth/admin/verify-id-tokens

から撮影これは、クライアント側のトークンが生成されます。
関連する問題