2011-08-18 29 views
9

Có cách nào để thực hiện một phép gán [Authorize] được bỏ qua trong một hành động trong một lớp điều khiển có thuộc tính Authorize không?Áp dụng AuthorizeAttribute cho một lớp điều khiển và hành động đồng thời

 [Authorize] 
     public class MyController : Controller 
     { 
      [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly, 
      public ActionResult PublicMethod() 
      { 
      //some code 
      } 

      public ActionResult PrivateMethod() 
      { 
      //some code 
      } 
     } 

Chỉ cần PrivateMethod() phải có chứng thực bắt buộc, nhưng cũng đã được yêu cầu.

PS: Tôi không muốn tạo bộ lọc ủy quyền tùy chỉnh của mình.

[] 's

+1

bạn đang cố gắng bỏ qua Authorize đó là trên lớp MyController cho hành động PublicMethod hoặc PrivateMethod? – itsmatt

+0

Đó là để bỏ qua cho hành động PublicMethod. Tôi đã viết một cái gì đó sai, tôi xin lỗi, nó đã được sửa ngay bây giờ! –

Trả lời

4

Theo mặc định nó không thể - nếu bạn thiết lập [Duyệt] cho bộ điều khiển sau đó chỉ chứng thực người dùng có thể truy cập đến hành động.

hoặc

Bạn có thể thử các quyết định tùy chỉnh: stackoverflow.

3

Một giải pháp là trong bài viết này: Securing your ASP.NET MVC 3 Application

Bài báo nói về một cách tiếp cận danh sách trắng, nơi bạn trang trí hành động với một AllowAnonymous thuộc tính tùy chỉnh. Yêu cầu bạn mở rộng AuthorizeAttribute và phương thức OnAuthorization để bỏ qua séc ủy quyền của AllowAnonymous -actions. (Phương pháp này được ghi có vào Levi, một chuyên gia về an ninh trong nhóm MVC.)

16

Bạn có thể sử dụng [AllowAnonymous]

[Authorize] 
public class MyController : Controller 
{ 
    [AllowAnonymous] 
    public ActionResult PublicMethod() 
    { 
      //some code 
    } 

    public ActionResult PrivateMethod() 
    { 
      //some code 
    } 
    } 
0
public class MyController : Controller 
    { 
     [Authorize] //it will only work for the following action 
     public ActionResult PublicMethod() 
     { 
     //some code 
     } 

     public ActionResult PrivateMethod() //[Authorize] will not work for this action 
     { 
     //some code 
     } 
    } 
+0

Thử thêm một số từ để giải thích câu trả lời của bạn. Câu trả lời của chỉ là mã thông thường ít hữu ích hơn. – Matt

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