$ createUser后无法显示注销按钮

时间:2014-04-16 10:39:48

标签: angularjs firebase firebase-security

我正在关注thinkster's ang-news tutorial使用firebase构建身份验证。我可以使用服务和控制器创建用户,但在注册新用户后他们没有登录。

我有auth.js服务:

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

    var ref = new Firebase(FIREBASE_URL);
    var auth = $firebaseSimpleLogin(ref);

    var Auth = {
        register: function(user){
            return auth.$createUser(user.email, user.password);
        },
        signedIn: function(){
            return auth.user !== null;  // user signed in if user property is not null
        },
        login: function(user){
            return auth.$login('password', user);   // type of login
        },
        logout: function(){
            auth.$logout();
        }
    };

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

    return Auth;
}]);

auth.user始终保持为空。

这是我的控制者:

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

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

然后我有register.html的电子邮件/密码表单。它调用register()

<form ng-submit='register()' novalidate>
    <input type='email' placeholder='Email' class='form-control' ng-model='user.email'>
    <input type='password' placeholder='Password' class='form-control' ng-model='user.password'>
    <input type='submit' class='btn btn-success' value='Register'>
</form>

用户在我的Firebase Forge中生成,但在我提交注册表单后,Logout按钮不会显示:

<ul class='nav navbar-nav navbar-right' ng-show='signedIn()'>
   <li>
      <a href='#' ng-click='logout()'>Logout</a>
   </li>
</ul>

为什么signedIn()在firebase forge中创建用户后仍然存在错误?

1 个答案:

答案 0 :(得分:4)

创建用户不会自动将其登录(虽然它曾在较旧版本的angularFire中使用过)。

将控制器方法更改为:

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

这将在Forge中创建用户,然后一旦该承诺结算,它将自动登录。

相关问题