C#权限检查器属性?

时间:2018-06-22 23:14:16

标签: c# asp.net

This answer

  

“它们(属性)在编译时被烘焙到程序集中,这对如何设置它们的属性有非常严重的影响。仅接受常数(在编译时已知)。”

...所以我不确定这是否可能:

我想在代码中用属性装饰几种方法,这些属性可以检查当前用户的角色,并且仅在角色达到要求的最小值时才允许执行。

到目前为止,我的属性如下:

[AttributeUsage(AttributeTargets.Method, Inherited = false, AllowMultiple = false)]
public class PermissionCheckAttribute : Attribute
{
    public PermissionsEnum MinRole { get; set; }
}

我打算这样使用它:

[PermissionCheck(MinRole=PermissionsEnum.Manager)]
public string Foo() 
{
    return "OK"
}

角色看起来像这样:

public enum PermissionsEnum
{
    Employee: 5
    Manager: 20
    Director: 50
}

我的代码中有一种方法始终可以让我检查当前用户和角色:

var userRole = GetCurrentUser().Role  // returns Employee[5]

我的问题是 ,我是否将代码比较了userRole和传递到属性中的MinRole

理想情况下,如果未达到return "OK"MinRole不会发生...但是我是否必须在角色比较代码中throw?如何使用属性有条件地处理两个不同的代码路径?

0 个答案:

没有答案