javascript - 如何在此代码中添加另一条路线?

标签 javascript angularjs frontend

我需要添加管理员用户。我读到我需要在 app.js 文件中分隔路由。但我找不到我需要这样做的例子。也许有人可以帮助我解决这个问题?

(function () {
    'use strict';

    angular
        .module('app', ['ngRoute', 'ngCookies'])
        .config(config)
        .run(run);

    config.$inject = ['$routeProvider', '$locationProvider'];
    function config($routeProvider, $locationProvider) {
        $routeProvider
            .when('/', {
                controller: 'HomeController',
                templateUrl: 'home/home.view.html',
                controllerAs: 'vm'
            })

            .when('/login', {
                controller: 'LoginController',
                templateUrl: 'login/login.view.html',
                controllerAs: 'vm'
            })

            .when('/register', {
                controller: 'RegisterController',
                templateUrl: 'register/register.view.html',
                controllerAs: 'vm'
            })

            .when('/admin', {
                controller: 'AdminController',
                templateUrl: 'admin/admin.view.html',
                controllerAs: 'vm'
            })

            .otherwise({ redirectTo: '/login' });
    }

    run.$inject = ['$rootScope', '$location', '$cookies', '$http'];
    function run($rootScope, $location, $cookies, $http) {
        // keep user logged in after page refresh
        $rootScope.globals = $cookies.getObject('globals') || {};
        if ($rootScope.globals.currentUser) {
            $http.defaults.headers.common['Authorization'] = 'Basic ' + $rootScope.globals.currentUser.authdata;
        }

        $rootScope.$on('$locationChangeStart', function (event, next, current) {
            // redirect to login page if not logged in and trying to access a restricted page
            var restrictedPage = $.inArray($location.path(), ['/login', '/register']) === -1;
            var loggedIn = $rootScope.globals.currentUser;
            if (restrictedPage && !loggedIn) {
                $location.path('/login');
            }
        });
    }

})();

最佳答案

看看this gist

基本上,您需要的是将一些与限制相关的数据附加到您的路线,并检查页面转换(如果您已获得授权),如果没有则进行重定向。

专用AuthService可以包含currentUser和授权数据,而不是运行 block 中的困惑数据。

关于javascript - 如何在此代码中添加另一条路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869862/

相关文章:

javascript - 按两个值对其中包含 JS 对象的数组进行排序

javascript - 应用 jqgrid 搜索过滤器工具栏

javascript - ReactJSS 样式表中可以引入常量吗?

javascript - 如何让页面30秒后刷新5次?

javascript - AngularJS 在指令运行之前通过 AJAX 检索数据

http - 将请求路由到多个后端服务器Dropwizard和Elasticsearch

javascript - 纯函数: state content vs.状态引用

html - 将更多元素添加到菜单时,将内容 div 高度扩展到左侧菜单高度

javascript - 过滤掉选择选项后,Angular 模型无法更新

AngularJS:错误:$q 未定义