【发布时间】:2014-07-21 06:15:06
【问题描述】:
我正在构建一个只能通过 JSON API(Rails 4.0,PostgreSQL)工作的项目。这是一个具有基于数据库权限的大型应用程序。而且我有 AngularJS 应用程序可以与这个 REST API 一起使用。
简化结构:
employees >--- position ---< permission
员工.rb
belongs_to :position
位置.rb
has_many :employees
has_many :permissions, dependent: :destroy
权限.rb
belongs_to :position
## Columns
# action (:manage, :read, :update, :create, etc...)
# subject_class
# subject
AngularJS 客户端的操作按钮/链接有问题。
例如,我不想在 Angular 应用程序的某处显示链接“添加订单”,因为员工的职位权限只允许读取资源而不是修改它:
id action subject_class subject
1 :read Order
我是如何解决这个问题的
我创建了一个资源 GET api/v1/employees/me,它返回 current_employee 及其所有权限:
"employee": {
...
:position": {
...
"permissions": {
{"id": 1, "action": "read", "subject_class": "Order", "subject": ""},
{"id": 6, "action": "manage", "subject_class": "Waybill", "subject": ""}
}
}
}
所以我在客户端拥有所有权限,但是将收到的权限与 AngularJS 应用程序 UI 完美集成的最佳方式是什么?
【问题讨论】:
-
我写了一篇关于这个的博客文章,解释了如何做这种事情jonsamwell.com/url-route-authorization-and-security-in-angular
标签: javascript ruby-on-rails ruby angularjs rest