Một cách thuận tiện là để tạo ra một lớp cơ sở mới
[Authorize]
public abstract class AuthorizeBaseController : Controller
{
}
và chắc chắn rằng tất cả các bộ điều khiển của bạn mà bạn yêu cầu ủy quyền (trong trường hợp của bạn, tất cả mọi thứ trong khu vực mà bạn quan tâm) xuống từ AuthorizeBaseController
.
public class HomeController : AuthorizeBaseController
{
public ActionResult Index()
{
return View();
}
}
Thuộc tính [Authorize]
sẽ ảnh hưởng đến tất cả các hậu duệ của lớp cơ sở mới.
Sửa Vấn đề mà tôi có với sử dụng phương pháp <location path="" >
là, kể từ khi động cơ định tuyến làm cho nó có thể cho bất kỳ tuyến đường để gọi bất kỳ điều khiển, thiết lập ủy quyền dựa trên url (và do đó một lộ trình cụ thể) thay vì các hành động điều khiển làm cho nó có thể gọi một bộ điều khiển cần được bảo vệ và bỏ qua ủy quyền. Đó không phải là một vấn đề trong biểu mẫu web vì một trang là một trang (và không phải là một cuộc gọi phương thức), nhưng sự tách biệt giữa trang/đường dẫn và mã trong MVC làm cho lỗ hổng bảo mật này trở thành một lỗ hổng lớn.
Nguồn
2011-01-04 19:30:15
Phương pháp của bạn được đề xuất làm phương pháp cũ cho MVC2. Không phải ở tất cả cho thấy bạn là không chính xác. Đây là một liên kết đến kỹ thuật mới và cải tiến cho MVC3 bằng cách sử dụng bộ lọc toàn cầu http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application .aspx –
@Doug thật khéo léo. Cảm ơn! –
Chào mừng bạn, và đó là một lời khen, vì tôi chỉ bắt đầu cố gắng học MVC3 vào thứ Ba. :) –