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