2014-06-24 3 views
0

내 웹 사이트에는 다양한 수준의 액세스 권한이있는 여러 페이지가 있습니다. 일반적으로, 나는 따라 뭔가 사용속성을 사용하여 프로필에 액세스

if(!user.IsAdministrator) 
    return RedirectToAction("AccessDenied", "Security"); 

을하지만 이것이 내가 사전 구축하려는 보안 수준에 저를 묶는 것을 깨달았다; 내가 원하는 것은 완벽하게 사용자 정의 할 수있는 액세스 스키마입니다.

내가 생각한 한 가지 해결책은 제한된 액세스 권한을 부여하려는 작업의 일부 특성을 설정 한 다음 배치 된 위치를 검색하는 것이 었습니다. 필자는 속성 (사용자 지정 항목)에 다소 미경험 적이기 때문에 표시되는 모든 작업을 나열하는 방법을 알고 있지만 적절한 액세스 권한을 확인하고 액세스를 거부하는 방법을 고안하는 데 여전히 어려움을 겪고 있습니다.

주제의 표시등이 있습니까? 또한이 문제를 다루는 표준 관행이 있는지 알고 싶습니다.

답변

1

일반적으로 ASP.NET MVC Authorize 특성은 이러한 용도로 사용할 수 있습니다.

사용자의 요구를 충족시키기 위해 AuthorizeCore 메서드에서 파생되고 AuthorizeCore 메서드를 재정의 할 수 있습니다. 그런 다음이 속성을 사용하여 MVC 작업 또는 전체 MVC 컨트롤러를 표시 할 수 있습니다. 아니면 글로벌 필터로 구성 할 수있어 모든 컨트롤러에 대해 자동으로 자동으로 활성화됩니다. 그런 행동은 당신이 AllowAnonymous 속성으로 표시 할 수 있습니다 확보하지 않으 : http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx 여기

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     if (filters != null) 
     { 
      filters.Add(new CustomAuthorizeAttribute()); 
     } 
    } 


[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] 
public sealed class CustomAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //your code here 
    } 

그래서 이미 당신은에이 주제에 대한 더 많은 기사를 찾을 수 있습니다 ASP.NET MVC 4 Custom Authorize Attribute with Permission Codes (without roles)

속성을 설명 게시물입니다 인터넷.

관련 문제