2012-09-20 8 views
0

일부 문서는 인증이 필요한 MVC4 문서 검색 사이트를 만들고 다른 문서는 익명 액세스를 허용합니다.조건부 인증을 수행하는 방법이 있습니까?

URL은 문서 목록을 검색하는 데 사용되는 폴더 ID를 포함합니다. 때로는 모든 문서가 인증을 필요로하지 않으며 때로 모든 문서가 인증을 필요로하는 경우가 있습니다.

어떻게 접근합니까? 미리 감사드립니다.

답변

0

문서가 들어있는 데이터베이스 테이블에 bool RequiresAuthentication 항목을 추가합니다. 이 문서는 무료 (승인 필요 없음)이고 그렇지 않은 경우 true 인 경우 false이됩니다.

그런 다음 문서를 제공하는 컨트롤러에서 이와 같은 작업을 수행 할 수 있습니다.

public Details(int Id) 
{ 
    Document doc = databaseContext.Document.Find(Id); 
    if(doc.RequiresAuthentication) 
    { 
     if(User.Identity.IsAuthenticated) 
     { 
      return View(doc); 
     } 
     // If the user is not authenticated, redirect them to log on 
     return RedirectToAction("LogOn", "Account"); 
    } 
    else 
    { 
     return View(doc); 
    } 
} 

당신은 그들에 대한 사용자의 로그가 다시 그들이 원하는 문서에 리디렉션됩니다 그래서 한 번에 로그에 returnUrl을 전달할 수 있습니다.

1

잠재적으로 제한된 문서를 가져 오는 작업에 사용자 지정 권한 부여 필터를 만들 수 있습니다.

먼저 제한된 문서에 대해 정적으로 캐시 된 ID 목록과 비교하여 문서에 권한 부여가 필요한지 여부를 확인합니다.

그런 다음 문서가 제한되면 필터는 현재 사용자에게 권한이 있는지 확인합니다. 사용자에게 권한이 부여되면 작업이 정상적으로 렌더링됩니다. 그렇지 않은 경우 작업 결과는 401/403 (적절한 경우) 또는 기본 "인증되지 않은"페이지로 리디렉션되어야합니다.

관련 문제