2012-12-13 33 views
5

Tôi đang cố tạo thuộc tính [Authorize] của riêng mình để tôi có thể sử dụng logic ủy quyền của riêng mình để có vai trò phân cấp.MVC4 Ủy quyền thuộc tính; làm thế nào để có được thông qua trong vai trò?

Nếu ai đó làm [Authorize(Roles = "Admin")] trên bộ điều khiển hoặc hành động Làm cách nào để nhận chuỗi "Quản trị" trong chức năng AuthorizeCore của tôi?

Tôi đang sử dụng mã này:

public class Authorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //authorize role logic 
      if (true) 
       return true; 

     return false; 
    } 
    } 

MVC4, .net 4.5, C#, VS 2012

Trả lời

8

Nó là bỏ thuốc lá là một điều phổ biến mà bạn đã phải đối mặt với.

giới thiệu trong bài này nên làm việc trong MVC4 vì nó đang làm việc trong MVC 3: - ASP.NET MVC - Alternative to Role Provider?

protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     bool isAdmin; 
     if(Roles.Contains("Admin")) 
      isAdmin = true; 

     return isAdmin ; 
    } 
+1

Cảm ơn, tôi đã theo ấn tượng rằng vai trò là vai trò của người hiện đang đăng nhập của người dùng, và không nghĩ rằng nó sẽ có những gì được thông qua năm với '[ Ủy quyền ("Quản trị")] ' – Kyle

+0

@ user1308743, không có vấn đề gì, cũng bỏ phiếu cho câu trả lời là điều tốt không nên quên;) –

+0

Tôi chỉ chờ thời hạn để vượt qua, để đánh dấu là câu trả lời và bình chọn =) – Kyle

1

Vai trò là một tài sản công cộng. Bạn sẽ có thể làm điều này:

public class Authorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 

     if(Roles.Contains("MyRole")) 
      return true; 

     return false; 
    } 
} 

Hoặc bất cứ điều gì mà bạn cần phải làm

0

Nếu bạn cần để có được danh sách các vai trò cho phép, bạn có thể chỉ đơn giản là có được vai trò tài sản. Nó sẽ liệt kê chuỗi được chỉ định trong trang trí thuộc tính.

public class Authorize : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var allowedRoles = Roles; 
    } 
} 

Bạn có thể thấy điều này trên AuthorizeAttribute definition