2014-10-29 84 views
0

我有一個名爲控制器「添加」,我只想授權管理角色,我存儲在角色enum Role授權基於特定角色的mvc4控制器

public enum Role { 
    Member = 0, 
    Administrator = 100 
} 

不指定角色,控制器但當我嘗試應用這樣的角色時,

​​

並試圖構建解決方案,它給了我一個錯誤。

Error 1 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type C:\Users\Admin\Desktop\Direct-Edited\Deor.Direct\src\Direct.Web\Controllers\AddController.cs 11 23 Direct.Web 

回答

0

你需要給值這樣的,它需要一個常量或字符串值

[Authorize(Roles = "AdminRole")] //String value here 
public class AddController : Controller 
{ 
} 

第二個選擇是檢查請求的基本控制器,如果是添加控制器,然後只允許角色是所需的角色。

+0

我已經嘗試過這一點,但是這始終重定向到重新登錄頁面時,該控制器稱爲 – shyama 2014-10-29 06:56:52

+0

即使角色是管理角色??,其他人將被重定向爲當然,因爲他們不會被授權。 – Rex 2014-10-29 06:58:07

+0

是的。如果角色是管理員然後也重定向到登錄 – shyama 2014-10-29 07:21:31

2

屬性的參數必須是常量。最簡單的方法是使用硬編碼值。

[Authorize(Roles = "Administrator")] 

另一種選擇是在靜態類中定義你的角色。

public static class AppRoles 
{ 
    public const string AdminRole = "Administrator"; 
} 

然後在你的控制器

[Authorize(Roles = AppRoles.AdminRole)] 
+0

我已經試過這個,但是當這個控制器調用 – shyama 2014-10-29 06:56:21

+0

時,這總是重定向到登錄頁面這是用戶點擊該控制器時的默認行爲,他們沒有所需的角色。你確定你正在測試的用戶是否具有正確的角色? – Shane 2014-10-29 07:13:06