angularjs – AngularFire:注销后仍可访问数据
发布时间:2020-12-17 17:13:25 所属栏目:安全 来源:网络整理
导读:我正在努力使用AngularFire进行用户身份验证和授权. 问题是,一旦授权用户登录并显示来自Firebase的数据,如果我退出,则仍会显示数据.我可以从作用域中删除数据(删除$scope.data),这使得它不显示,但如果我再次作为未经授权的用户登录,则重新附加引用并且数据仍
我正在努力使用AngularFire进行用户身份验证和授权.
问题是,一旦授权用户登录并显示来自Firebase的数据,如果我退出,则仍会显示数据.我可以从作用域中删除数据(删除$scope.data),这使得它不显示,但如果我再次作为未经授权的用户登录,则重新附加引用并且数据仍然存在. 我猜数据在某处保留在客户端.但我怎么能摧毁它呢?每次我退出时,我都尝试用新的替换Firebase引用,徒劳无功. 这是代码: <!DOCTYPE html> <html ng-app="app"> <head> <title></title> </head> <body ng-controller="ctrl"> <div ng-hide="loggedIn">Not logged In</div> <button ng-hide="loggedIn" ng-click="login()">Log in</button> <div>The data: {{data}}</div> <button ng-show="loggedIn" ng-click="logout()">Log out</button> </body> <script type="text/javascript" src="bower_components/angular/angular.js"></script> <script type="text/javascript" src="bower_components/firebase/firebase.js"></script> <script type="text/javascript" src="bower_components/firebase-simple-login/firebase-simple-login.js"></script> <script type="text/javascript" src="bower_components/angularfire/angularfire.js"></script> <script type="text/javascript"> angular.module('app',['firebase']) .controller('ctrl',function ($scope,$firebase,$firebaseSimpleLogin) { var ref = new Firebase(<ref>); var ngref = $firebase(ref); var auth = $firebaseSimpleLogin(ref); $scope.loggedIn = !!auth.user; $scope.login = function () { auth.$login('google').then( function (user) { $scope.data = ngref.name; $scope.loggedIn = true; },function (error) { throw error; }); }; $scope.logout = function () { $scope.loggedIn = false; auth.$logout(); }; }) </script> </html> 编辑 看来这种行为与AngularFire无关.下面的代码使用vanilla Firebase API,结果相同. var auth = new FirebaseSimpleLogin(ref,function (error,user) { if (error) { throw error; } else if (user) { $scope.$apply(function () { $scope.loggedIn = true; $scope.data = ref; }); } else { $scope.$apply(function () { delete $scope.data; $scope.loggedIn = false; }); } }); $scope.loggedIn = false; $scope.login = function () { auth.login('google'); }; $scope.logout = function () { auth.logout(); }; 解决方法
我有点晚了(差不多一年),但是可以通过删除“firebase:session ::”的localStorage条目来解决这个问题.
window.localStorage.removeItem("firebase:session::<host-name>"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |