2014-02-26 53 views
0

我試圖根據IAuthorizationFilterASP.NET MVC 4上構建過濾器來限制對某些控制器的訪問。在ASP.NET MVC 4中實現IAutorizationFilter 4

這個想法是,如果Web應用程序的最終用戶具有適當的權限,則允許他訪問,而在其他情況下,他不會。

所以我試圖在最後,獲得基於User.Identity.Name的布爾權限,然後檢查他是否有權利。

我是否需要實現與我擁有BOOL權限一樣多的過濾器,或者只有一個過濾器可以完成這項工作? 我該如何執行此操作?有什麼好主意嗎?

回答

0

不,你不必這樣做。您如何確定每個用戶的權限可以在OnAuthorization之內完成,或者重構爲單獨的靜態方法並在OnAuthorization之內調用。

但是,當你使用使用自定義授權屬性對於任何Action方法或爲Controller,你應該可以說,只有Create權限的用戶可以與Read權限可以訪問此controller訪問Action或用戶。請看看這篇博文。

http://codeutil.wordpress.com/2013/05/14/forms-authentication-in-asp-net-mvc-4/#mvc-implement-custom-authorization-filter

,你會發現有定義

public int StartTime { get; set; } 
public int EndTime { get; set; } 

,而不是兩個變量,你可以使用

public bool AllowRead {get;set;} 
public bool AllowWrite {get;set;} 

然後使用授權的屬性如下

[HttpPost] 
[CustomAuthorize(AllowRead = false, AllowWrite = true)] 
public ActionResult Create(Model model) 
{ 
    //your code 
} 
上面的

只是這樣做的一種方式。另一種方法是使用枚舉標誌。請看看這個答案。

How could I use my own database table for MVC 4 user control (and authorizing with boolean fields in role table)?

+0

感謝您的回覆。權限被存儲到與成員關係表相關的表(類)中。所以,我試圖獲得當前登錄用戶的權限並檢查他/她是否有權執行控制器操作。特權允許利用所有控制器的方法。 – ABCmo