代码之家  ›  专栏  ›  技术社区  ›  Teoman shipahi

保持firebase-webapp(.net core mvc)之间的身份验证状态

  •  0
  • Teoman shipahi  · 技术社区  · 6 年前

    我正在创建一个 ASP.NET核心MVC 应用程序,其中身份验证提供程序将是firebase。

    我的Web应用程序托管在Azure中,一旦用户登录,它就会向我的FireBase端点发送一个HTTPS请求,这看起来像 https://myFirebaseApp.cloudfunctions.net/signup 使用用户名和密码,它将创建一个用户,如下所示:

    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/token以保持身份验证的持久性。

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Teoman shipahi    6 年前

    我发现我可以为此使用自定义令牌。我要用的是 createCustomToken signInWithCustomToken 方法。

    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);
          });
      }