2013-10-05 5 views
1

У меня есть приложение Firebase AngularJS, и я использую FirebaseSimpleLogin для выполнения проверки подлинности, но у меня возникли проблемы с пониманием того, как я могу продолжать работу с зарегистрированным пользователем в моем приложении. Каждый раз, когда я вхожу в систему и обновляю страницу, кажется, что я больше не аутентифицирован. Я понимаю, что токен генерируется после входа в систему, который используется для аутентификации пользователя, но мне нужно его аутентифицировать с использованием этого токена на каждой странице, и если это так порождает любые накладные расходы между моим приложением и firebase?Хранение токена аутентификации firebase

Раздел мое приложение, которое выполняет логин/authenticatin

var ref = new Firebase("https://xxx.firebaseio.com/"); 
angularFireAuth.initialize(ref, {scope: $scope, name: "user", path:"/login"}); 

    // Used to authenticate user at a later time 
$scope.auth = function(token, callback) 
{ 

    ref.auth(token, function(error, data) { 

     if(error) 
     { 
      console.log("Login Failed!", error); 
     } 
     else 
     { 
      $scope.$apply(function() 
      { 
       $scope.user = data.auth; 
      }); 
     } 

     if (typeof callback === 'function') 
     { 
      callback(error,data); 
     } 

    }); 
}; 


    // Login to fetch authentication token to be used by $scope.auth() 
$scope.login = function() 
{ 
    angularFireAuth.login("password", { 
     email: $scope.credentials.email, 
     password: $scope.credentials.password 
    }); 
}; 


    // On login stores user within $scope 
$scope.$on("angularFireAuth:login", function(evt, user) { 
    $scope.$apply(function() 
    { 
       // Is it possible to save this user accross my application not just in this $scope 
      $scope.user = user; 

    }); 
}); 

Вот разметка, которая захватывает комбинацию адреса электронной почты/пароль

<div class="container-single" center> 
       <h3>Sign in</h3> 
       <input type="text" ng-model="credentials.email" placeholder="Username" /> 
       <input type="password" ng-model="credentials.password" placeholder="Password" /> 
       <input type="checkbox" id="checkbox-1" name="checkbox-1" /> <label>Remember my password</label> 
       <button ng-click="login()">Sign in</button> 
      </div> 

ответ

2

Если вы используете angularFireAuth, то вы не» вам нужно сделать какую-либо аутентификацию самостоятельно. Просто проверьте значение $scope.user, чтобы узнать, вошел ли пользователь во вход или нет в каждом представлении.

var ref = new Firebase("https://xxx.firebaseio.com/"); 
angularFireAuth.initialize(ref, {scope: $scope, name: "user", path:"/login"}); 

$scope.login = function() { 
    angularFireAuth.login("password", { 
    email: $scope.credentials.email, 
    password: $scope.credentials.password 
    }); 
}; 

При успешном входе в систему, $scope.user автоматически устанавливается на детали пользователя.

+0

Спасибо, что функция auth, которую я добавил в $ scope, не нужна. –

Смежные вопросы