angularjs - 使用 AngularJS 保护管理面板

标签 angularjs

我想使用 PHP + MySQL 构建一个带有 AngularJS(客户端)和 RESTful API(服务器)的 Web 应用程序,仅用于学习目的。该应用程序必须有管理面板,受登录保护。

我使用 ui-router 来防止未经授权的用户访问面板,但据我所知,客户端的每个代码都不安全。

如果恶意用户修改代码以在不登录的情况下授予对面板的访问权限怎么办?我知道服务器数据和代码受到保护,但 HTML 部分不 protected (布局被暴露),这与常见的 PHP 应用程序不同,其中 View 在服务器端受到“保护”。我应该担心吗?

最佳答案

我会使用$httpProvider至少设置一个基于 token 的基本登录,并进行 token /用户检查。您可以使用 Auth 服务和 login()logoutisLogedIn() 等方法来管理 header 处理状态并将其保存到 $cookies例如。这样,恶意用户就可以破解并访问 html 模板,但没有数据库数据...缩小代码也有助于避免这种风险。

angular.module('myApp', [])
         .run(['Auth', '$location', '$rootScope', function (Auth, $location, $rootScope) {

            $rootScope.$watch(function () {
                if (!Auth.isLogedIn())
                    $location.path("/login");

                return $location.path();
            });
        }])
       .config(['$routeProvider', '$httpProvider',
        function ($routeProvider, $httpProvider) {
            $routeProvider
                    .when('/home', {templateUrl: 'partials/home.html'})
                    .when('/login', {templateUrl: 'partials/login.html', controller: 'LoginCtrl'})
                    .when('/logout', {templateUrl: 'partials/login.html', controller: 'LogoutCtrl'})
                    .otherwise({redirectTo: '/home'});
                $httpProvider.defaults.headers.common["Authorization"] = "";
                $httpProvider.defaults.headers.common["X-User"] = "";
            }
        ]);

来自代码片段:

  • $httpProvider.defaults.headers.common 将为每个请求设置 header 。
  • $httpProvider.defaults.headers 将为下一个请求设置 header 。
  • run 时,$rootScope 上设置的 $watch 将在范围 isLogedIn() 每次更改时触发> 应检查 header 标记与数据库中的条目。

关于angularjs - 使用 AngularJS 保护管理面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075124/

相关文章:

javascript - AngularJS:重置功能重置表格但不清除输入字段并选择?

angularjs - ngrepeat 不迭代 $ 属性

javascript - 为什么 Angular Controller 需要 "$scope"

javascript - 无法访问 Angular 中 Controller 内的范围变量

javascript - 我们如何合并两个 instagram API 的结果

php - 来自PHP服务器的AngularJS流音频

javascript - 安装 lumx Angular Material 设计框架时出错?

android - 如何在angularjs/Phonegap(iOS,Android,Chrome)中持久存储

javascript - 使用 AngularJS 指令、工厂和 ng-repeat 动态更改内容

javascript - ngAnimate 以非固定高度向下/向上滑动