Pregunta

Tutorial: http://www.thinkster.io/angularjs/wBhtRLWHIR/6-authentication-users-with-a-service

Estoy siguiendo este tutorial y parece que pierdo mi usuario tan pronto como se registra.

Aquí está mi fábrica auth.js:

'use strict';

app.factory('Auth', function($firebaseSimpleLogin, FIREBASE_URL, $rootScope){

    var ref = new Firebase(FIREBASE_URL);

    var auth = $firebaseSimpleLogin(ref);

    var Auth = {
        register : function(user) {
            return auth.$createUser(user.email, user.password);
        },
        signedIn : function() {
            // PROBLEM: authUser is always null
            console.log(auth.user);
            return auth.user !== null;
        },
        logout : function () {
            auth.$logout();
        }
    };

    $rootScope.signedIn = function () {
        return Auth.signedIn();
    };

    return Auth;
});

Aquí está mi controlador auth.js:

'use strict';

app.controller('AuthCtrl', function($scope, $location, Auth){
    if (Auth.signedIn()) {
        $location.path('/');
    }

    $scope.register = function () {
        Auth.register($scope.user).then(function (authUser) {
            console.log(authUser);
            $location.path('/');
        });
    };
});

El archivo console.log firmado en la fábrica siempre es nulo.¿Alguna idea de dónde está la desconexión?El registro en sí funciona bien y authUser se completa en console.log en el controlador al registrarse.

¿Fue útil?

Solución 2

Encontré una pregunta muy similar que está más lejos en el tutorial: no puedeMostrar botón de cierre de sesión después de $ createuser

En la respuesta, aprendí que Angularfire se usó para registrar automáticamente al usuario después de que se creó.Aparentemente, ahora ya no es lo que es por eso que la autenticación. El usuario en firmedin fue nulo.

Otros consejos

La documentación más reciente para Angularfire dice que el $createUser método de $firebaseSimpleLogin devuelve una promesa pero no menciona cualquier parámetros que se pasan al then llamar de vuelta.

Puedes usar el $getUsuarioActual Método para obtener el usuario actual después de que el usuario se registre.

El tutorial necesita ser actualizado y usted debe siempre Verifique la documentación de las bibliotecas que esté utilizando usted mismo.

Su código para iniciar sesión debería verse así:

Auth.signedIn = function() {
    auth.$getCurrentUser().then(function(currentUser) {
        console.log(currentUser);
    }, function() {
        console.log('error');
    });
};

Ahora estoy haciendo el mismo tutorial.Este código (en Auth Controller) trabajó para mí:

    $scope.register = function () {
        Auth.register($scope.user).then(function (authUser) {
            console.log(authUser);
            Auth.login($scope.user);
            $location.path('/');
        });
    };

Soy un N00B total, pero lo que (creo) Esto está haciendo es autenticar al usuario, luego ejecutando una función que registra el usuario justo después.El botón de cierre de sesión ahora está funcionando como se esperaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top