0

書き込みルールを特定のものに設定したとしましょうemail:

{
  "rules": {
    ".read": true,
    ".write": "auth.email == 'example@example.com'"
  }
}

そして、私はangularFireAuthサービスを使用してログインします:

.controller('loginCtrl', ["$scope", "$rootScope", "angularFireAuth", function($scope, $rootScope, angularFireAuth) {

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

    $scope.cred = {};

    $scope.signin = function() {

        angularFireAuth.login('password', {
            email: $scope.cred.user,
            password: $scope.cred.password,
            rememberMe: true
        });
    }
}]);

newCtrlコレクションに新しいアイテムを追加するために使用する があります。

.controller('newCtrl', ["$scope", "$rootScope", "angularFireCollection", function($scope, $rootScope, angularFireCollection) {

    var ref = new Firebase("https://test.firebaseio.com/");
    $scope.items = angularFireCollection(ref);
}]);

items.add()私の見解で呼び出すと:

<input type="text" ng-model="item.name" />
<input type="text" ng-model="item.desc" />
<button ng-click="items.add(item)">submit</button>

正常にログインした後でもNot Authorized応答が返ってきますloginCtrl

  • ログイン後にアプリケーション全体で永続的な認証状態を作成するにはどうすればよいですか?
  • ログアウトした後、アプリケーション全体で永続的な認証状態を削除するにはどうすればよいですか?
4

2 に答える 2

1

認証状態はセッションベースであり、コントローラーのスコープに依存しないため、アプリケーション全体で "永続的な認証状態" が既に存在します。

そのエラーを生成しているコードで何か他のことが起こっているに違いありませんが、質問に関する限り、ここexample@example.comでメールとexampleパスワードとして使用する実際の例を見ることができます.

セキュリティ ルールも一致させたので、test@example.comパスワードでログインするtestと、 を作成できなくなりますitems

于 2013-11-06T21:40:51.950 に答える
0

angularFireAuth が $rootscope からログイン イベントをブロードキャストしていることがわかります。、 、 、.$on('angularFireAuth:login',function(event){...})またはのように設定できます。これを念頭に置いて、次のようなものが必要になる場合があります。.$on('angularFireAuth:logout',function(event){...}).$on('angularFireAuth:error',function(event,error){...})

.controller('newCtrl', ["$scope", "$rootScope", "angularFireCollection", function($scope, $rootScope, angularFireCollection) {
    var ref = new Firebase("https://test.firebaseio.com/");
    $scope.items = angularFireCollection(ref);
    $scope.$on('angularFireAuth:login', function(){
        $scope.addItem=function(item){
            $scope.items.add(item);
        };
    });
}]);

.. 関数が $scope に割り当てられる前に、ユーザー認証イベントが確実に発生するようにする必要があります。

于 2013-11-06T21:13:48.647 に答える