jquery - AngularJS 授权重定向

标签 jquery angularjs firebase

我用 angularfire 和 firebase 构建了一个登录系统。

我有一个在用户登录时和其他多次调用的函数。检查 authData 是否存在,如果存在则将用户注册为已登录。

fbRef.onAuth(authDataCallback);
function authDataCallback(authData) {
    if (authData) {
        $scope.loggedIn = true;
    } else {
        $scope.loggedIn = false;
    }
}

我也设置了路线

.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        controller: '',
        templateUrl: '/company/pages/account/pages/dashboard.php',
    })
    .when('/dashboard', {
        controller: '',
        templateUrl: '/company/pages/account/pages/dashboard.php',
    })
    .when('/login', {
        controller: 'Authorization',
        templateUrl: '/company/pages/account/pages/login.php',
    })
    .when('/register', {
        controller: 'Authorization',
        templateUrl: '/company/pages/account/pages/register.php',
    })
})

我希望除了登录和注册页面之外的每个页面都仅限于登录用户。如果 $scope.loggedIn 返回 false,我希望将用户重定向到登录页面。

我在互联网上尝试了很多解决方案,但没有一个对我有用。其中大多数都导致了超出限制的错误。

在我的情况下,我将如何限制访问?

最佳答案

您可以检查“loggedIn”变量是否发生变化

    app.controller('MyCtrl', ['$scope', '$location', function($scope, $location){

        fbRef.onAuth(authDataCallback);

        $scope.loggedIn = null;

        function authDataCallback(authData) {
            $scope.loggedIn = authData ? true : false
        }

        $scope.$watch("loggedIn", function(val){

            val === false && $location.path("/login");

        });

    });

关于jquery - AngularJS 授权重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542033/

相关文章:

angularjs - Angular - 相同的 Url "/"但根据用户的登录状态使用不同的模板

android - 从 Firebase DataSnapshot 中提取单个值

javascript - 如何使用Firebase云函数停止读取child_added?

android - 当我尝试将图像上传到 firebase 存储 android 时调用 addOnFailureListener

javascript - 如何使用 javascript 和/或 jquery 添加表单字段值?

angularjs - Angular 和 Bluimp jQuery 文件上传 : parseMetaData error

javascript - 使用 MEAN.js 上传照片

jquery - JSON解析多个key

javascript - 如何在同一页面显示超过一个月

javascript - 在 jQuery 中获取最接近元素的形式