2012-06-04 20 views
6

Tôi đang cố gắng để thiết lập một hệ thống cho phép/chứng thực, và tôi đang bối rối, vì vậy tôi có một vài câu hỏi:Sử dụng lập mưu/Cancan/Rolify cùng

  1. Trong rất nhiều hướng dẫn, mọi người thiết lập mối quan hệ người dùng/vai trò HABTM. Tôi nhận thấy rằng điều này cho phép mỗi người dùng có nhiều vai trò, nhưng nếu bạn muốn mỗi người dùng chỉ có một vai trò, điều này có cần thiết không? Nếu tôi muốn có các tùy chọn cho người dùng "hoạt động" và "không hoạt động", những người này có nên là các vai trò hoặc một cái gì đó khác không?
  2. Trong wiki Cancan, nó nói nếu bạn muốn một người dùng có một vai trò, bạn chỉ cần làm cho nó một thuộc tính và sau đó sử dụng "có thể : quản lý,: tất cả nếu user.role ==" admin "", nhưng không phải là nguy hiểm vì mỗi lần "quản trị" chỉ là một chuỗi? Có phải vấn đề này không? Cách tốt hơn để giải quyết vấn đề này là gì?

tôi đã cố gắng hết sức để đọc qua các tài liệu hướng dẫn cho tất cả mọi thứ liên quan và tôi bắt đầu với hướng dẫn

http://railsapps.github.com/tutorial-rails-bootstrap-devise-cancan.html

này mặc dù tôi cũng đã đọc http://starqle.com/articles/rails-3-authentication-and-authorization-with-devise-and-cancan-part-1/ và tonyamoyal.com/2010/09/29/rails-authentication-với-devise-and-cancan-part-2-restful-resources-for-administrator/

Tôi thực sự không thể làm cho nó hoạt động theo cách mình muốn. Làm thế nào để tôi làm điều này?

Trả lời

8

1. Bạn không cần phải nhiều vai trò hoặc một bảng vai trò

Cancan là thuyết bất khả tri đến cách bạn xác định vai trò trong ứng dụng của bạn. Bạn có thể dễ dàng có một trường vai trò trong mô hình người dùng của mình.

Đối với người dùng "hoạt động" và "không hoạt động", bạn có hai tùy chọn. Bạn có thể có một trường cho trạng thái đó hoặc bạn có thể có vai trò "không hoạt động" và xem xét bất kỳ vai trò nào khác "đang hoạt động". Điều này phụ thuộc vào ý bạn là "hoạt động" và cách bạn sử dụng thông tin đó trong ứng dụng của mình.

2. Không có gì sai khi lưu trữ vai trò của người dùng trong chuỗi.

Thực tế là vai trò được lưu trữ dưới dạng chuỗi không làm cho nó kém an toàn hơn. Tuy nhiên, bạn nên sử dụng attr_protected to prevent mass assignment của vai trò người dùng.

attr_protected :role 

Bằng cách đó, người dùng sẽ không thể cập nhật vai trò của riêng mình.

Các vấn đề liên quan