내 프로젝트에 Get (int id), Get(), Insert (T t) 및 Edit (T t)와 같은 간단한 기본 작업을 수행하는 컨트롤러가 여러 개 있습니다.). 코드 중복을 피하기 위해 GenericController를 만든 다음이 GenericController에서 다른 모든 컨트롤러를 상속했습니다. 모든 것이 잘 작동합니다. 그러나 상속 될 때 동일한 컨트롤러 동작에서 다른 사용자 역할을 구현하려는 경우 문제가 발생합니다. 예를 들어 아래의 코드를 살펴 : 위의 코드에서MVC (ASP) 상속 할 때 동일한 작업에 다른 사용자 역할 구현
public class GenericController<T>: Controller{
//other actions
[HttpGet]
public async Task<IEnumrable<T>> Get(){
//necessary action goes here
}
[HttpPost]
public async Task<IActionResult> Insert(T t){
//necessary action with t
}
}
[Authorize]
public class ProductController: GenericController<Product>{
//Get action is authorized to everyone
//Insert action is authorized to Manager only
}
[Authorize]
public class EmployeeController: GenericController<Employee>{
//Get action is authorized to everyone
//Insert action is authorized to Owner only
}
를 삽입 액션, GenericController 모두 제품과 일반 컨트롤러에서 다른 권한을 가지고에서 그 상속됩니다.
상속 된 컨트롤러에서 코드를 복제하고 싶지 않습니다. 그러나 올바른 권한 부여도 필요합니다. 누구든지 적절한 해결책을 알고 있습니까? 어떤 도움을 많이 주시면 감사하겠습니다.
아마도 가장 좋은 방법은 아니지만 어쩌면 적합합니다. 삽입 메소드 내부의 사용자 역할을 확인하지 않고 관리자가 아닌 경우 사용자 권한을 확인하지 않는 이유는 무엇입니까? – alecardv