Có cách tiếp cận đồng thuận tốt nhất để triển khai vai trò người dùng khi sử dụng các tuyến tài nguyên RESTful không?Cấu trúc ứng dụng cho các tài nguyên RESTful dựa trên vai trò
Nói rằng tôi có các nguồn sau:
User has_many Tickets
Event has_many Tickets
Ticket belongs_to Person, Event
Và sau đó tiếp tục nói rằng tôi có hai loại người: khách hàng và đại lý. Cả hai sẽ đăng nhập vào hệ thống, nhưng với quyền truy cập tài nguyên và chức năng khác nhau dựa trên vai trò của chúng. Ví dụ:
Khách hàng có thể truy cập vào:
- index tổ chức sự kiện, cho thấy
- index Ticket (scoped bởi người sử dụng), show, mua/tạo, trả lại/xóa
- Person tạo, chương trình, cập nhật
Đại lý có thể truy cập:
- Chỉ số sự kiện, show, tạo, cập nhật, xóa
- chỉ số vé, show, bán/tạo, cập nhật, hoàn/xóa
- Person chỉ mục, chương trình, tạo, cập nhật, xóa
nào của 4 cách tiếp cận chung dưới đây sẽ sạch hơn và linh hoạt hơn?
bộ điều khiển riêng biệt trong vai trò thư mục và các nguồn lực trong không gian tên, ví dụ:
namespace "agent" do
resources :events, :tickets, :people
end
namespace "customer" do
resources :events, :tickets, :people
end
riêng biệt điều khiển bằng vai trò, ví dụ:
AgentController
def sell_ticket, etc
CustomerController
def buy_ticket, etc
điều khiển chung với hành động riêng biệt khi cần thiết, ví dụ:
TicketController
before_filter :customer_access, :only => :buy
before_filter :agent_access, :except => :buy
def buy #accessed by customer to create ticket
def sell #accessed by agent to create ticket
Hành động được chia sẻ với câu lệnh có điều kiện, ví dụ:
TicketController
def create
if @role == :customer
#buy ticket
elsif @role == :customer
#sell ticket
end
end
Mô hình không biết về người dùng đã được xác thực. Điều đó thường được quản lý bởi bộ điều khiển. Ngoài ra, OP đang hỏi về cách tốt nhất để xử lý bảo mật. Điều này không thể được tùy chỉnh trong chế độ xem. Điều gì về các kết nối API? Làm cách nào để bạn thực thi bảo mật cho các vai trò người dùng khác nhau ở đó? Bạn không muốn lặp lại mã, vì vậy nó cần phải được ở một vị trí trung tâm tức là: điều khiển. Vì vậy, câu hỏi là, làm thế nào bạn có thể quản lý một cách an toàn bộ điều khiển của bạn để thêm loại kiểm soát tốt hơn vai trò người dùng và quyền. –