1

我正在为我的公司在 Angular 中创建一个新的企业应用程序。我对 Angular 感到非常兴奋,但在客户端处理角色并不适合我。

基本上,我会在用户登录时保存令牌,并且在用户查看页面之前,会将授权请求发送到服务器以获取基于令牌的角色和用户详细信息。

在授权向服务器获取页面数据的请求后,无论用户的角色如何,服务器都会返回整个数据,之后我使用 ng-switch 并根据角色呈现模板。

现在这里的问题是我试图在客户端显示和隐藏数据,所以在我收到用户信息后,我必须将角色保存在客户端的任何范围变量或本地存储中。但我的观点是,如果我将它保留在客户端,我可以非常轻松地更改角色并访问我想要的任何数据。

所以我应该假设Angular不适合我的应用程序,我试图根据服务器的角色在客户端显示数据,因为我觉得如果用户可以看到你的逻辑和数据,他显然可以使用它。

这是我的观点

   <div ng-switch="User.data.Role">
       <div ng-switch-when="Admin">
            <h1>hello you are seeing your dashboard Admin</h1>
        </div>

        <div ng-switch-when="Manager">
            <h1>hello you are seeing your dashboard Manager</h1>
        </div>
    </div>

这是我在控制器中填充用户变量的方法

app.controller('dashoBoardController',  ['$scope','UserService', function ($scope, UserService) {

    $scope.authentication = UserService.authentication;
    $scope.User = UserService.fillAuthData();
    console.log($scope.User);
    $scope.Greeting = "Welcome! to your Dashboard";



}]);

这是服务方法

   var _fillAuthData = function () {

        var authData = SessionService.get('user');

        if (authData) {
            _authentication.isAuth = true;
            _authentication.data = authData;

        }

        console.log(_authentication);
        return _authentication;
    }

会话服务基于令牌从服务器获取用户数据。正如您所看到的,由于视图是如此具有描述性,因此更改 authData 中的角色并不是什么大问题。

如果有解决方法,请帮助我。我真的很想在 Angular 中完成这个项目。

4

2 回答 2

1

如果 Web 服务(在服务器上运行)向客户端返回经过身份验证的用户无权访问的数据,则 Web 服务(服务器端)存在安全漏洞。无论您决定选择哪个客户端框架,都无法修复该客户端/浏览器端。AngularJS 可能适用于您想在浏览器中执行的任何操作,但您的 Web 服务已损坏。

于 2014-09-10T15:20:48.640 回答
0

我同意 nomve,服务器端的安全不是这里的问题。服务器端的安全应该永远是安全的最后一道门,并且应该始终非常小心地实施。

然而,能够在客户端破解角色并看到用户不应该看到的界面,即使没有从服务器提取数据,也不是最好的体验。

每次远程检查角色,并且不将角色存储在本地,可以解决问题,但需要成本。是否有一种本地方法来加密角色信息并使在客户端更难破解角色?

于 2015-11-12T15:48:19.170 回答