0
在ASP.NET MVC 2中,爲了保護控制器的動作,我創建了一個繼承自ActionFilterAttribute
類的類RequirePermission
。控制器的動作看起來像在ASP.NET MVC中保護控制器動作
[RequirePermission(permissions="CanView")]
public ActionResult List()
{
...
}
我有名字的枚舉Permissions
public enum Permissions { CanDoEdit, CanView, CanInsert }
的RequirePermission
類看起來像
public class RequirePermission : ActionFilterAttribute
{
public string permissions;
string[] param = { "," };
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string[] requirePermissions = permissions.Split(param, StringSplitOptions.RemoveEmptyEntries);
if (requirePermissions.Contains(Permissions.CanDoEdit.ToString()))
{
//Check permission
}
if (requirePermissions.Contains(Permissions.CanView.ToString()))
{
//Check permission
}
if (requirePermissions.Contains(Permissions.CanInsert.ToString()))
{
//Check permission
}
}
}
現在反而讓不同的屬性,我想用RequirePermission
像 [RequirePermission(permissions=Permissions.CanView+","+Permissions.CanEdit)]
這樣的屬性,以便我可以將它用於不同的場景。但編譯器會拋出以下錯誤。
的屬性參數必須是常量表達式,屬性參數類型
非常感謝。 – Adeel 2010-02-02 11:26:49
其實我使用'Permissions.CanView | Permissions.CanEdit'。我認爲它應該是'Permissions.CanView&Permissions.CanEdit'來表示用戶具有這兩個權限。 – 2010-02-02 12:08:09
我認爲你錯了。要設置兩個權限,請使用 Permissions.CanView | Permissions.CanEdit。 但爲了避免覆蓋枚舉值,我已經設置了2的值。 – Adeel 2010-02-02 12:59:02