火力地堡简单登录+角 - 为每个用户自己的数据自己的、地堡、火力、简单

2023-09-13 04:23:55 作者:82年的雪碧

这是我的控制器。注册功能工作正常。登录没有,但我的问题是,怎样才能让我的数据为每个用户?例如,我有用户john@doe.cz,UID是simplelogin:29,ID 29.每个用户都有自己的帐户,类别等,那么,什么是最好的做法还是我怎样才能做到这一点?我想制作own-fir​​ebase.firebaseio.com/users/(id,UID,或某种散列)/类别或帐户。

  app.controller('AuthCtrl',函数($范围,$ ionicModal,$火力点,的DataFactory){    VAR AUTH =新FirebaseSimpleLogin(usersAuth,功能(错误,用户){        如果(错误){            //尝试登录时发生错误            的console.log(错误);        }否则如果(用户){            与火力地堡//用户认证            的console.log('用户名:'+ user.uid +',提供:'+ user.provider);        }其他{            //用户被注销        }    });    $ ionicModal.fromTemplateUrl('意见/ auth /中register.html',函数(模式){        $ scope.registerModal =模态;    },{        适用范围:$范围,        动画:滑入式    });    $ ionicModal.fromTemplateUrl('意见/ auth /中的login.html',函数(模式){        $ scope.loginModal =模态;    },{        适用范围:$范围,        动画:滑入式    });    $ scope.registerModalShow =功能(){        $ scope.registerModal.show();    };    $ scope.registerModalHide =功能(){        $ scope.registerModal.hide();    };    $ scope.loginModalShow =功能(){        $ scope.loginModal.show();    };    $ scope.loginModalHide =功能(){        $ scope.loginModal.hide();    };    $ scope.newUser =功能(用户){        $ scope.userEmail = user.email;        $ scope.userPassword = user.password的;        auth.createUser($ scope.userEmail,$ scope.userPassword,功能(错误,用户){            如果(!错误){                的console.log(用户UID:'+ user.uid +',电子邮件:+ $ scope.userEmail +'用户名:'+ user.id +',用户密码:'+ $ scope.userPassword);            }        });        $ scope.userRef =新的火力地堡(URL +'/用户'+ $ scope.userPassword);        $ scope.registerModalHide();        user.email ='';        user.password的='';        警报($ scope.userId);    };    $ scope.userLogin =功能(用户){        $ scope.userLoginEmail = user.email;        $ scope.userLoginPassword = user.password的;        auth.login('密码',{            电子邮件:user.email,            密码:user.password的        });        $ scope.loginModalHide();        user.email ='';        user.password的='';    };}); 

解决方案

我用下面的方法来创造为每个用户自己的数据:

我创建一个新的配置文件,这可能会对我想要的任何细节,当有人在我的应用程序的第一次登录:

  $ scope.login =功能(){//这个逻辑处理增加新用户到我的火力点。    $ rootScope.auth。$登录('叽叽喳喳')//因为我使用Twitter登录。        。然后(功能(用户){            $ scope.myFirebaseRef $子(user.uid)$集({名称:user.displayName})。 //创建新的配置文件。            的console.log(欢迎+ user.displayName +!);            $ state.go('家');        },功能(错误){            consolle.log(错误);        }    );} 
2016微信数据报告发布

然后,我执行此解析当我改变一个观点:

 解析:{//基本上,它要求一个登录的用户,并等待一个承诺之前装入控制器。  会议:函数($ rootScope){    返回$ rootScope.auth。$ getCurrentUser()。然后(功能(用户){      如果(用户){        $ rootScope.someCurrentUser = user.uid;      }    });  }} 

最后,我用 $ rootScope.someCurrentUser 以创建一个个性化的会话:

  .controller('sessionController',['$ rootScope','$火力',函数($ rootScope,$火力点){    VAR someUserRef =新的火力地堡('https://myfirebase.firebaseio.com/'+ $ rootScope.someCurrentUser);    $ scope.sessionRef = $火力(someUserRef);    //使用/东西在您的个性化会话。}]); 

我希望这种方法给你一些想法创建每个用户的会话/自己的数据。

This is my controller. Register function works ok. Login doesn't, but my question is, how can I make data for each user? For example, I have user john@doe.cz, UID is simplelogin:29, ID 29. Each user will have own accounts, categories, etc. So what is the best practice or how can I make it happen? I think about making own-firebase.firebaseio.com/users/(id, uid, or some kind of hash)/categories or accounts.

app.controller('AuthCtrl', function($scope, $ionicModal, $firebase, DataFactory){

    var auth = new FirebaseSimpleLogin(usersAuth, function(error, user) {
        if (error) {
            // an error occurred while attempting login
            console.log(error);
        } else if (user) {
            // user authenticated with Firebase
            console.log('User ID: ' + user.uid + ', Provider: ' + user.provider);
        } else {
            // user is logged out
        }
    });

    $ionicModal.fromTemplateUrl('views/auth/register.html', function(modal) {
        $scope.registerModal = modal;
    }, {
        scope: $scope,
        animation: 'slide-in-up'
    });

    $ionicModal.fromTemplateUrl('views/auth/login.html', function(modal) {
        $scope.loginModal = modal;
    }, {
        scope: $scope,
        animation: 'slide-in-up'
    });

    $scope.registerModalShow = function() {
        $scope.registerModal.show();
    };

    $scope.registerModalHide = function() {
        $scope.registerModal.hide();
    };

    $scope.loginModalShow = function() {
        $scope.loginModal.show();
    };

    $scope.loginModalHide = function() {
        $scope.loginModal.hide();
    };

    $scope.newUser = function(user){
        $scope.userEmail = user.email;
        $scope.userPassword = user.password;

        auth.createUser($scope.userEmail, $scope.userPassword, function(error, user) {
            if (!error) {
                console.log('User UID: ' + user.uid + ', Email: ' + $scope.userEmail + ', User ID: ' + user.id + ', User Password: ' + $scope.userPassword);
            }
        });

        $scope.userRef = new Firebase(url + '/users' + $scope.userPassword);
        $scope.registerModalHide();
        user.email = '';
        user.password = '';
        alert($scope.userId);
    };

    $scope.userLogin = function(user){
        $scope.userLoginEmail = user.email;
        $scope.userLoginPassword = user.password;

        auth.login('password', {
            email: user.email,
            password: user.password
        });
        $scope.loginModalHide();
        user.email = '';
        user.password = '';
    };
});

解决方案

I'm using the following approach to create "own data for each user":

I create a new profile, which could have whatever detail I want, when someone logs in my app for first time:

$scope.login = function () { // This logic handle the addition of new users to my firebase.

    $rootScope.auth.$login('twitter') // Because of I'm using Twitter for login.
        .then(function (user) {
            $scope.myFirebaseRef.$child(user.uid).$set({name: user.displayName}); // Create new profile.
            console.log("Welcome " + user.displayName + "!" );
            $state.go('home');
        }, function (error) {
            consolle.log(error); 
        }
    );
}

Then, I perform this resolve when I change a view:

resolve: { // Basically, It's asking for a logged user and waiting for a promise before load the controller. 
  session: function($rootScope) {
    return $rootScope.auth.$getCurrentUser().then(function(user) {
      if (user) {
        $rootScope.someCurrentUser = user.uid;
      }
    });
  }
}

Finally, I use $rootScope.someCurrentUser to create a personalized session:

.controller('sessionController', ['$rootScope', '$firebase', function($rootScope, $firebase) {
    var someUserRef = new Firebase('https://myfirebase.firebaseio.com/' + $rootScope.someCurrentUser);
    $scope.sessionRef = $firebase(someUserRef);

    // Do something with/in your personalized session.  

}]);

I hope this approach gives you some ideas to create sessions/own data per user.

 
精彩推荐
图片推荐