在Firebase-WebApp(.NET Core MVC)之间保持身份验证状态

时间:2018-07-24 03:19:06

标签: firebase firebase-authentication asp.net-core-mvc

我正在创建一个 ASP.NET Core MVC 应用,其中身份验证提供程序将为FireBase。

我的Web应用程序托管在Azure中,一旦用户登录,它就会向我的Firebase端点发送一个HTTPS请求,该请求看起来像https://myFirebaseApp.cloudfunctions.net/signup,带有用户名和密码,并将创建以下用户; < / p>

https://firebase.google.com/docs/auth/web/start?authuser=0

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

我的意图是在响应中获取一种session token并将其保存在cookie中。每次用户导航到另一个页面时,我都需要验证该cookie /令牌以保持身份验证的持久性。

实现这一目标的方法是什么?还是有更好的方法来保持这种集成?

1 个答案:

答案 0 :(得分:0)

我发现我可以为此使用自定义标记。我需要使用的是createCustomTokensignInWithCustomToken种方法。

https://firebase.google.com/docs/auth/admin/create-custom-tokens

创建令牌:

  createCustomToken(request, response) {
    let uid = request.query.uid;
    if (!uid) {
      response.send("query.uid is required.");
      return;
    }
    let additionalClaims = {
      myExtraField: 1
    };
    this.admin
      .auth()
      .createCustomToken(uid, additionalClaims)
      .then(function(customToken) {
        // Send token back to client
        response.send(customToken);
      })
      .catch(function(error) {
        response.send(error);
      });
  }

登录:

  signInWithCustomToken(request, response) {
    const id_token = request.query.id_token;
    if (!id_token) {
      response.send("query.id_token is required.");
      return;
    }

    // Sign in with signInWithCustomToken.
    this.authService
      .signInWithCustomToken(id_token)
      .then(result => {
        response.send(result);
      })
      .catch(error => {
        response.send(error);
      });
  }