기존 클래스를 수정하여 한 메소드가 다른 역할을 허용하고 다른 메소드가 해당 역할을 가지기를 원하지 않습니다.클래스 내의 메소드에 대한 다른 역할
[Authorize("addedit, admin")]
public class JobsController : BaseODataController<Job>
{
//This method needs to allow one more role!
public Job Get(int Id)
{
//stuff
}
public IHttpActionResult Post(Job job)
{
//stuff
}
public IHttpActionResult Update(int id)
{
//stuff
}
}
문제는이 역할을 추가하여 클래스 수준에서 추가해야하며이 역할이이 클래스의 모든 메서드에 액세스 할 수 있도록합니다. 이 역할이 클래스에 액세스하려고하지만이 방법 만 사용할 수있게하려고합니다.
이[Authorize("addedit, admin, newrole")]
public Job Get(int Id)
{
//stuff
}
[Authorize("addedit, admin")]
public IHttpActionResult Post(Job job)
{
//stuff
}
그러나 실제로는 여러 가지 방법이 있으므로 각각에 대해 이렇게 실제로이이 클래스가 지저분 -이 일을하는 가장 간단한 방법은이 다음 클래스 수준에서 속성을 제거하는 것입니다. 이 작업을 수행하거나이 메소드를 자신의 클래스로 분리하지 않고이 클래스에 액세스 할 수있는 방법은 없으며 새 역할을 통해 단 하나의 메소드 만 허용 할 수 있습니까?
컨트롤러 레벨에'[Authorize ("addedit, admin")]'을두고 특정 동작에서'[Authorize ("addedit, admin, newrole")]를 추가하면 어떻게됩니까? –
사용자가 "newrole"만 가지고 있으므로 클래스 수준의 권한을 초과하지 않으므로이 방법은 작동하지 않습니다. – user3407039
컨트롤러가 너무 많아 컨트롤러를 분리하지 않는 이유는 무엇입니까? [Route]를 사용하여 다른 끝점을 동일한 끝점에 매핑 할 수 있지만 각 사용자 그룹에 대한 컨트롤러를 만들 수 있습니다. 컨트롤러를 정적으로 만들 수도 있습니다. – Dragonvil