Tôi có bộ điều khiển được sử dụng cho từng loại ủy quyền. Ví dụ, một ủy quyền lớp A sẽ có một bộ các trình điều khiển mà mỗi bộ điều khiển yêu cầu ủy quyền lớp A. Có cách nào để đặt một thuộc tính [Authorize(Role="Class A")]
ở đâu đó sẽ áp dụng cho từng bộ điều khiển đó mà không cần phải trang trí từng bộ điều khiển với cùng một thuộc tính?Làm thế nào để cho phép một bộ điều khiển mà không đặt chú thích trên mỗi bộ điều khiển?
Trả lời
Bạn có thể khởi tạo những bộ điều khiển có nguồn gốc từ bộ điều khiển cơ sở của bạn. cụ thể là đặt thuộc tính của bạn trên một lớp cơ sở điều khiển và để đảm bảo rằng mỗi bộ điều khiển bên trong có nguồn gốc từ lớp cơ sở.
[Authorize(Role="Class A")]
public class CustomBaseController : Controller{}
public class AController: CustomBaseController{}
public class BController: CustomBaseController{}
Đặt thuộc tính trên một lớp cơ sở và kế thừa, tạo ra hệ thống phân cấp thích hợp nhất với kịch bản của bạn ...
Bạn có thể kế thừa từ một bộ điều khiển cơ bản, chẳng hạn như
[Authorize(Role = "Class A")]
public class ClassARequiredController : Controller {}
Nếu không, bạn sẽ nhìn vào một bộ lọc toàn cầu, và bởi câu hỏi của bạn, tôi giả sử bạn có nhiều vai trò và bộ nên tôi không nghĩ rằng các bộ lọc toàn cầu là dành cho bạn.
Có có một cách, làm cho tất cả những A-class
điều khiển xuất phát từ điều khiển một cơ sở và địa điểm trên đó các AuthorizeAttribute
:
[Authorize(Role="Class A")]
public class AController : Controller
{
...
}
public class AFirstController : AController // Gets it's parent attribute
{
...
}
public class ASecondController : AController // Gets it's parent attribute
{
...
}
Nếu bạn có thời gian, bạn có thể xem http://stackoverflow.com/questions/32741403/inheritance-of-authorized-roles-in-controller-classes này không. –
2 hoặc 3 phản ứng ở đây giải thích cách bạn có thể làm điều đó ... nhưng bạn cũng có thể sử dụng Fluent Security để xử lý tất cả các bộ điều khiển + Hoạt động thiết lập trong một tập tin. Một số lợi ích (từ trang web của họ):
Mã dựa cấu hình
Không thuộc tính hoặc xml cluttering lên mã của bạn.
dấu ấn Low
thạo an ninh sẽ không lây lan như cháy rừng trong ứng dụng của bạn. Cấu hình của bạn có thể được lưu giữ trong một tệp duy nhất.
URL hiện được đặt mặc định thành trang đỗ xe miền. Fluent Security có còn là một thứ không? – Caimen
- 1. Lớp lệnh động trong Bộ điều khiển chú thích
- 2. <mvc: chú thích hướng /> với bộ điều khiển không được chú thích
- 3. Làm thế nào để sử dụng UISearchDisplayController từ bộ điều khiển trong bộ điều khiển UITabBar?
- 4. Đặt tên cho bộ điều khiển gốc
- 5. Bộ điều khiển Spring-MVC được chú thích không được nhận diện khi bộ điều khiển mở rộng giao diện
- 6. Khi nào sử dụng bộ điều khiển Bộ điều khiển không dây (Bộ điều khiển không đồng bộ, servlet 3)
- 7. Làm cách nào để truy cập Bộ điều khiển Xem từ bộ điều khiển thanh tab?
- 8. Bộ điều khiển mỏng
- 9. Làm thế nào để thêm một bộ điều khiển điều hướng với bộ dựng giao diện?
- 10. WPF - Chuyển giá trị của một điều khiển cho Bộ chuyển đổi để đặt độ rộng trên điều khiển khác
- 11. Bố cục đường ray trên mỗi bộ điều khiển
- 12. Trình bày một bộ điều khiển phương thức mà không biết bộ điều khiển xem hiện tại?
- 13. Xcode: Làm thế nào để tạo một bộ điều khiển xem PopUp xuất hiện trong bộ điều khiển xem khác
- 14. Một phần lớp cho bộ điều khiển
- 15. before_filter với một bộ điều khiển
- 16. Làm thế nào để gọi điều khiển hành động trong bộ điều khiển khác trong CakePHP?
- 17. Apple làm cho bộ điều khiển của nó chứa các bộ điều khiển khác như thế nào?
- 18. Tôi có thể có cả Bộ điều khiển và Bộ điều khiển ApiController cho cùng một thứ không?
- 19. Di chuyển trở lại từ Bộ điều khiển sang một bộ điều khiển trước
- 20. EJB làm bộ điều khiển
- 21. Custom scaffold cho bộ điều khiển
- 22. Làm thế nào để xóa bộ điều khiển ExtJS?
- 23. AngularJS Thủ công làm cho bộ điều khiển và mẫu
- 24. Tư vấn AOP mùa xuân trên Bộ điều khiển Chú thích
- 25. Bộ điều khiển không đồng bộ trong ASP.NET MVC
- 26. Thông báo trạng thái trên trang web Spring MVC (bộ điều khiển chú thích)
- 27. Cách: Bộ điều khiển điều hướng trong Bộ điều khiển thanh tab
- 28. Đặt thuộc tính bộ điều khiển trên bộ điều khiển ứng dụng sau khi ứng dụng sẵn sàng
- 29. iPhone - cho phép định hướng ngang trên một bộ điều khiển xem
- 30. Làm thế nào để chơi bộ điều khiển tiêm biến với tên thích hợp vào mẫu?
Plus, tùy thuộc vào số lượng bộ điều khiển bạn có, bạn có thể dễ dàng đặt thuộc tính pesky [Authorize] ở trên cùng. Với việc có một bộ điều khiển cơ sở có vẻ như bạn sẽ phải gây rối với mỗi bộ điều khiển anyways. – FrankO
Có, nhưng sử dụng bộ điều khiển cơ sở là cách thực hành tốt nhất để bắt đầu và kiểm tra một số dữ liệu cho tất cả bộ điều khiển. Có thể bạn muốn sử dụng thuộc tính Authorize tùy chỉnh. Cũng có những thay đổi trên thuộc tính Custom Authorize trên một bộ điều khiển đơn giản. – gandil