【发布时间】:2014-11-04 07:00:36
【问题描述】:
我正在为我的公司在 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 中做这个项目。
【问题讨论】:
-
作为一般规则,服务应该只发回用户有权查看的数据。换句话说,安全应该由服务而不是客户端来处理。
标签: angularjs security authorization user-roles client-side-scripting