당신이하고자하는 것을하기 위해서, 당신은 당신의 견해를 통제해서는 안됩니다. 컨트롤러 속성을 통해이 작업을 수행 할 수 있습니다. 다음과 유사한 내용 :
[Authorize]
public class MyController {
}
이렇게하면 전체 컨트롤러를 보호 할 수 있습니다. 사용자가 인증되지 않으면 해당 컨트롤러 내의 모든 작업이 응답하지 않습니다 (특히 401 응답을 받음). 당신은 아래의 예와 같이 개별 사용자 또는 개별 역할 권한을 부여하여이를 확장 할 수 있습니다 : 귀하의 경우
[Authorize(Users="eestein,JasCav")
public class MyController {
}
[Authorize(Roles="Administrator")]
public class MyController {
}
, 당신은 그것에 인증과 전체 컨트롤러를 갖고 싶어하지 않을 수 있습니다. 음, 훌륭하게 ASP.NET MVC는 동작 수준의 인증 제어를 제공합니다. 따라서 다음 작업을 수행 할 수 있습니다.
public class MyController {
public ActionResult Index() { }
[Authorize(Roles="Administrator")]
public ActionResult Admin() { }
}
이 아이디어를 사용하면 사용자가 페이지에서 볼 수있는 것을 제어 할 수 있습니다. 페이지의 여러 측면을로드 할 수 있도록 작업의 일부 페이지를 반환하려고합니다. 예를 들어 일부 일반 데이터와 일부 비밀 데이터를 보여주는보기가있을 수 있습니다. 정상 데이터는 정상 페이지를 통해 반환 될 수 있습니다. 비밀 데이터는 페이지 내에서 부분보기로 반환되어야합니다. 그러나 401이 발생하면이를 처리하고 아무 것도 표시하지 않을 수 있습니다.
매우 간단합니다. .NET 팀은이를 설정하는 작업을 훌륭하게 수행 했으므로 컨트롤러 내에서 개별적으로 사용 권한을 확인할 필요가 없습니다. 도움이되기를 바랍니다. 권한 부여 특성을 사용하는 방법에 대한 자세한 내용은 온라인 검색을 수행하십시오.
업데이트 권한을 제어하는 페이지의 관리자가있는 경우 권한 부여 속성을 설정하는 방법에 대해 현명해야합니다. 여기에서 "역할"은 매우 중요합니다 (위의 예제를 참조하십시오). 예를 들어 관리자가 "John Doe를 SpecialUser 역할에 추가하려고합니다."라고 말하면 John Doe 사용자는 역할이 SpecialUser로 설정된 모든 작업에 액세스 할 수 있습니다 (실제로 그렇다면 시스템에 대한 역할).
분명히 관리자에게이 작업을 수행 할 수있는 방법을 제공해야하며 권한 부여 특성은이를 완벽하게 수행해야합니다. 페이지에 대한 사용 권한을 가진 사용자를 확인하려면 데이터베이스를 쿼리하여 누가 어떤 역할의 일부인지 확인해야합니다. 다음은 설정에 대해 생각할 수있는 방법입니다.
- 작업의 역할을 제어합니다.
- 관리자가 해당 역할을 부여받는 사람을 제어합니다.
- (간단한 쿼리를 통해) 누가 어떤 역할에 할당되었는지 확인할 수 있습니다. 그런 다음 (역할에 대한 지식을 통해) 누가 사이트의 어떤 부분을 볼 수 있는지 볼 수 있습니다.
이 내용이 명확 해지기를 바랍니다. 나는 네가하려는 일이 가능하다고 생각한다.
업데이트 2 예, 여기에는 컨트롤러에 정적 그룹이 있고 모든 새 그룹을 프로그래밍 방식으로 추가해야한다고 가정합니다. 어떤 종류의 유스 케이스가 다른 사용 권한 유형을 즉석에서 만들어야하는지 알고 싶습니다. 남용 가능성이있는 것처럼 보입니다. 어쨌든, 나는 이것을위한 해결책이 없다.
<%= Html.RenderAction("Partial1") %>
<%= Html.RenderAction("Partial2") %>
경우 : 작동하는 방법을 일부 전망에 관해서는
은 ... 당신이 뭔가를해야합니다, 당신의 Index.aspx 파일 내부
public class ProductController : Controller
{
//
// GET: /Index/
public ActionResult Index()
{
return View();
}
public ActionResult Partial1()
{
return PartialView();
}
[Authorize]
public ActionResult Partial2()
{
return PartialView();
}
}
...이 같은 뭔가 사용자는 두 번째 RenderAction
을 처리 할 수있는 권한이 없으므로보기가 표시되지 않습니다. (컨트롤러에서 확인할 수 있습니다.)
희망을 분명히하는 희망! 나는 뛰고있어, 이제 더 이상 확장 할 수 없다.
@JasCav 답변 해 주셔서 감사합니다. 이미 [Authorize] 속성을 사용하고 있습니다. 네가 구체적으로 말한대로는 아니야. 무단 액세스를 방지하기 위해서만 사용하고 있습니다. 그러나 그것이 작동하는 방식을 완전히 이해할 수 없다면 또 다른 문제가 있습니다. 사용 권한은 특정 페이지의 adm에 의해 설정됩니다 (그 이유는 페이스 북의 예를 사용했기 때문입니다). 나는 그가 DB를 확인하는 대신에 다른 사람들이 보길 바라는 것을 볼 방법이 없다. 특정 부분 뷰를 어떻게 반환 할 수 있습니까? 사용자는 필드 a 및 b 또는 c 또는 기타에 대한 권한을 가질 수 있습니다. 당신의 솔루션은이 경우에 효과가 있습니까? 다시 한번 감사드립니다. – eestein
@eestein - 내 솔루션은 올바르게 설정되었다고 가정하고 설명하는 경우 작동 할 수 있습니다. 지금 내 대답에 대한 업데이트를 작성 중입니다. 잠시 후 찾으십시오. – JasCav
@JasCav 감사합니다. 기다릴게요. – eestein