MVC 응용 프로그램에 대한 새 권한 기반 액세스 방법을 구현하려고합니다. 허가 그룹이 있으며 각 그룹에는 허가의 목록이 포함되어 있습니다. 예를 들어 CreateInvoice,RemoveInvoice,etc
권한 키가 포함 된 Invoices
권한 그룹이 있습니다.C# 속성 : enum 상수를 입력 매개 변수로 사용
각 접근법 Action
에는 실행을위한 특정 권한이 필요합니다. 나는 CustomAttributes을 통해이 같은 것을이 작업을 수행하기 위해 노력하고있어 :
public class InvoiceController : Controller
{
[RequirePermission(Permissions.Invoices.CreateInvoice)]
public ActionResult Create()
{
return View();
}
}
은 쉽게 개발자가 나는 권한의 미리 정의 된 목록을 만들려고 해요 다른 권한 그룹 및 권한 키를 기억 할 수 있도록하기 위해이해야 권한 그룹과 권한 키의 조합이어야합니다. 하지만 C# 에서 속성 인수를 사용하는 데 적용되는 제한 사항으로 인해 아직 작동하지 못했습니다.
내 마지막 시도는 각 권한 그룹에 대한 열거를 생성 한 후 거기에 열거 상수로 권한 키를 정의 (나는 초대형 enumurator을하고 거기에 모든 권한 열쇠를 넣어하지 않음) :
public class PermissionEnums
{
[PermissionGroup(PermissionGroupCode.Invoice)]
public enum Invoices
{
CreateInvoice = 1,
UpdateInvoice = 2,
RemoveInvoice = 3,
ManageAttachments = 4
}
[PermissionGroup(PermissionGroupCode.UserAccounts)]
public enum UserAccounts
{
Create = 1,
ChangePassword = 2
}
}
여기서 볼 수 있듯이 PermissionGroup
속성을 사용하여 지정된 사용 권한 그룹 키와 각 열거 형 상수에 숫자 코드로 지정된 사용 권한 키 코드가 있습니다. 다음과 같이 정의
RequirePermission 속성 :
public class RequirePermissionAttribute : Attribute
{
private Enum _Permission;
public RequirePermissionAttribute(Enum Permission)
: base()
{
_Permission = Permission;
}
}
하지만 문제 유형 Enum
의 객체 속성 인수로 사용할 수 없습니다 수 있습니다./미안 :
어떤 제안/아이디어는
그래, 내가 그 일을했지만 내 문제가 확인 속성을 (ActionFilter 속성)을 생성하지 않습니다 사용자 권한. 방금 정의 된 사용 권한 상수를 만들려면 일반 문자열 키를 사용하는 것보다 나은 방법이 필요합니다. – sos00
http : //www.vivienchevallier.com/Articles/create-a-custom-authorizeattribute-that-accepts-parameters-of-type-enum 시도해보십시오. – AdrianCogiel