1

루트 로그인되어 있는지 확인하는 방법 :firebaseAuth, 사용자가

var app = angular 
    .module('defexApp', [ 
    'ngAnimate', 
    'ngCookies', 
    'ngResource', 
    'ngRoute', 
    'ngSanitize', 
    'ngTouch', 
    'firebase' 
    ]) 
    .constant('FIREBASE_URL', 'https://defex.firebaseio.com/') 
    .config(function ($routeProvider) { 
    $routeProvider 
     .when('/', { 
     templateUrl: 'views/landing.html', 
     }) 
     .when('/add', { 
     templateUrl: 'views/defects.html', 
     controller: 'DefectCtrl' 
     }) 
     .when('/login', { 
     templateUrl: 'views/login.html', 
     controller: 'AuthCtrl', 
     resolve: { 
      currentUser: function(Auth) { 
      return Auth.signedIn(); 
      } 
     } 
     }) 
     .when('/register',{ 
     templateUrl: 'views/register.html', 
     controller: 'AuthCtrl', 
     resolve: { 
      currentUser: function(Auth) { 
      return Auth.signedIn(); 
      } 
     } 
     }) 
     .when('/defects/:defectId', { 
     templateUrl: 'views/defectview.html', 
     controller: 'DefectViewCtrl', 
     resolve: { 
      currentUser: function(Auth) { 
      return Auth.resolveUser(); 
      } 
     } 
     }) 
     .when('/defectlist', { 
     templateUrl: 'views/defectList.html', 
     controller: 'DefectCtrl', 
     resolve: { 
      currentUser: function(Auth) { 
      return Auth.resolveUser(); 
      } 
     } 
     }) 
     .otherwise({ 
     redirectTo: '/' 
     }); 
    }); 

서비스 : 내가 제대로 $ waitForAuth 또는 $ requireAuth를 사용하고 있다면 나도 몰라

'use strict'; 

app.factory('Auth', function($firebase, $firebaseAuth, FIREBASE_URL) { 

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

var Auth = { 
    register: function(user) { 
     return auth.$createUser({email: user.email, password: user.password}); 
    }, 
    login: function(user) { 
     return auth.$authWithPassword({email: user.email, password: user.password}); 
    }, 
    logout: function() { 
     return auth.$unauth(); 
    }, 
    resolveUser: function() { 
     return auth.$requireAuth(); 
    }, 
    signedIn: function() { 
     return auth.$waitForAuth(); 
    }, 

    user: {} 

}; 

return Auth; 

}); 

. 내가하고 싶은 것은 views/defects/: defectid와/defectlist에 대한 것입니다. 뷰를로드하기 전에 사용자가 인증되었는지 확인하고 싶습니다. 그래서 $ requireAuth를 사용하는 함수를 사용했습니다. 그러나 로그인 여부에 관계없이 주소 표시 줄에/defectlist를 입력 할 수 있으며보기로드가 올바르지 않다고 확신 할 수 있습니다. 또한 사용자가 로그인했는지 어떻게 확인합니까? 사용자가 로그인했는지 여부에 따라 ng-hide 또는 ng-show를 원하고 $ getAuth를 사용할 수 있다고 생각합니까? 나는 잘 모르겠다. 어떤 도움이나 조언을 주시면 감사하겠습니다!

+0

this example 참조 (https://github.com/firebase/angularFire-seed)? 여기에서 설명한 방법을 사용하며 인증을 기다리는 것과 리디렉션 및 기타 인증 관련 기능을 보여줍니다. 또한 이러한 개념을 다룬 [문서의 섹션] (https://www.firebase.com/docs/web/libraries/angular/guide.html#section-angular-authentication)도 있습니다. – Kato

답변

1

로그인 상태에 따라 사용자를 표시/숨기고 사용자에게 다시 라우팅 - 문서의 코드를 사용하여 서비스에 저장 한 사용자 개체를 채 웁니다. 라우팅 오브젝트 구성에서 사용자 오브젝트가 널 (null)인지 또는 컨트롤러에로드 할 때 사용자 오브젝트가 널 (null)인지 확인하기위한 점검 메소드를 가질 수 있습니다 (null 인 경우, 경로 재 지정). 당신은 다시 경로를하고 싶지만 그냥이 그들이 당신을 방법을 믿습니다 = "사용자"

// Create a callback which logs the current auth state 
function authDataCallback(authData) { 
    if (authData) { 
    //store the authData object in your service 
    } else { 
    //clear the authData object in your service 
    //re-route user to logged out page 
    console.log("User is logged out"); 
    } 
} 
// Register the callback to be fired every time auth state changes 
var ref = new Firebase("https://<your-firebase>.firebaseio.com"); 
ref.onAuth(authDataCallback); 
0

/숨기기 요소를 사용 NG 쇼 = "사용자"또는 NG 숨기기를 표시하지 않으려면 현재 현재 로그인 한 사용자 확인 : 당신이 [angularFire 시드]을 확인 했

FirebaseUser mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();

관련 문제