私が取り組んでいるウェブサイトはFirebase認証を使用しており、ログインするユーザーごとに、アクセスできるページに関する権限が異なります。
サインインの設定方法は次のようになります post :
私が直面している問題は、彼らが新しいページにアクセスしたときに、トークンをクライアントからサーバーに戻そうとしていることです(これで行われた方法とほぼ同じです Firebase Doc )、トークンを確認し、ウェブページを表示する権限があるかどうかを確認します。
私はこれを行うための最良の(そして最も安全な)方法を見つけようとしています。私は次のオプションを検討しました:
私はリクエストヘッダーでトークンを渡そうとしていますが、私の理解では、ユーザーが別のページへのリンクをクリックしたとき(またはJavaScriptでリダイレクトされた場合)にヘッダーを追加することはできません。同じ問題がPOSTの使用にも当てはまります。
この情報をサーバーに安全に渡し、ユーザーが別のページへのリンクをクリックしたときにアクセス許可を確認するにはどうすればよいですか?
次の方法で、クライアント側でaccessToken(idToken)を取得できます。
var accessToken = null;
firebase.auth().currentUser
.getIdToken()
.then(function (token) {
accessToken = token;
});
リクエストヘッダーに渡します。
request.headers['Authorization'] = 'Bearer ' + accessToken;
サーバー側では、好みの方法でトークンを取得し、(Node.js)のようなFirebase AdminSDKでリクエストを認証します。
firebaseAdmin.auth()
.verifyIdToken(accessToken)
.then(decodedIdToken => {
return firebaseAdmin.auth().getUser(decodedIdToken.uid);
})
.then(user => {
// Do whatever you want with the user.
});