2012-02-09 44 views
6

Tôi đang di chuyển một ứng dụng từ ASP.NET Web Forms sang ASP.NET MVC 3. Một trong những phần trọng tâm và quan trọng hiện đang bị khóa trong thư mục riêng của nó. Tôi đã hạn chế người dùng trái phép truy cập vào thư mục này bằng cách sử dụng những điều sau đây trong tập tin web.config của tôi:Ủy quyền tùy chỉnh trong ASP.NET MVC 3

<location path="home" allowOverride="false"> 
    <system.web> 
    <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 

Câu hỏi của tôi là, làm thế nào để thực hiện cùng loại bảo mật này trong ASP.NET MVC 3? Tôi có linh cảm rằng nó liên quan đến việc thiết lập các thuộc tính trên các lớp Controller của tôi. Tuy nhiên, AuthorizeAttribute có vẻ như nó chỉ chấp nhận một danh sách các tên người dùng và không phải là một trạng thái xác thực (hãy sửa tôi nếu tôi sai). Tôi đã nhìn vào ứng dụng ASP.NET mẫu và tôi không thấy bất cứ điều gì đặc biệt được cấu hình trong đó.

Ai đó có thể vui lòng chỉ cho tôi đúng hướng về điều này không?

Cảm ơn!

+0

Hãy xem câu trả lời được chấp nhận của câu hỏi của tôi tại: http://stackoverflow.com/q/746998/1796 –

Trả lời

5

Đó là đúng, bạn sẽ sử dụng các AuthorizeAttribute, như vậy:

[Authorize] 
public ActionResult AuthenticatedUsers() 
{ 
    return View(); 
} 

[Authorize(Roles = "Role1, Role2")] 
public ActionResult SomeRoles() 
{ 
    return View(); 
} 

[Authorize(Users = "User1, User2")] 
public ActionResult SomeUsers() 
{ 
    return View(); 
} 

Đối với "tình trạng auth", tôi không chắc là tôi biết những gì bạn có ý nghĩa. Có vẻ như Roles sẽ xử lý yêu cầu xác thực đó.

+0

Quyền truy cập '[Ủy quyền]' phải xác minh rằng chúng thường được xác thực. Khi tôi đọc nó, đó là những gì OP đang tìm kiếm. Tôi nghĩ rằng anh ta có thể bị ấn tượng rằng tham số Vai trò là bắt buộc. Ngoài ra, cần lưu ý rằng các thuộc tính này có thể được áp dụng cho chính lớp điều khiển để xử lý tất cả chúng theo cùng một cách thay vì phải định nghĩa nó cho mỗi phương thức. –

0

Bạn vẫn có thể thực hiện ủy quyền trong web.config nếu bạn muốn. Hầu hết mọi người sẽ chuyển quyền cấp phép của họ cho Hành động hoặc cho toàn bộ bộ điều khiển (hoặc bộ điều khiển cơ sở) bằng bộ lọc [Ủy quyền].

Bộ lọc Authorize hỗ trợ vai trò hoặc Người dùng giống nhau mà web.config không (Sử dụng * và? Cho "Authenticated" và "vô danh")

Nếu người dùng và vai trò sẽ không làm điều đó cho bạn kiểm tra bài viết này vào việc tạo ra một thuộc tính tùy chỉnh ủy quyền:

ASP.NET MVC Custom Authorization

0

bạn sẽ sử dụng thuộc tính ủy quyền để nói mà người dùng hoặc vai trò sẽ có quyền truy cập vào một bộ điều khiển (nếu bạn đặt vào một bộ điều khiển, những điều khoản sẽ setted cho tất cả các hành động trong bộ điều khiển này) hoặc một hành động. Nhìn: http://build.mt.gov/2011/10/27/aspnet-mvc3-and-the-authorize-attribute.aspx. Rembember người sẽ cung cấp vai trò của bạn (từ một người dùng cụ thể) sẽ là một RoleProvider, giống như bạn sử dụng với asp.net webforms.

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