일부 문서는 인증이 필요한 MVC4 문서 검색 사이트를 만들고 다른 문서는 익명 액세스를 허용합니다.조건부 인증을 수행하는 방법이 있습니까?
URL은 문서 목록을 검색하는 데 사용되는 폴더 ID를 포함합니다. 때로는 모든 문서가 인증을 필요로하지 않으며 때로 모든 문서가 인증을 필요로하는 경우가 있습니다.
어떻게 접근합니까? 미리 감사드립니다.
일부 문서는 인증이 필요한 MVC4 문서 검색 사이트를 만들고 다른 문서는 익명 액세스를 허용합니다.조건부 인증을 수행하는 방법이 있습니까?
URL은 문서 목록을 검색하는 데 사용되는 폴더 ID를 포함합니다. 때로는 모든 문서가 인증을 필요로하지 않으며 때로 모든 문서가 인증을 필요로하는 경우가 있습니다.
어떻게 접근합니까? 미리 감사드립니다.
문서가 들어있는 데이터베이스 테이블에 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
을 전달할 수 있습니다.
잠재적으로 제한된 문서를 가져 오는 작업에 사용자 지정 권한 부여 필터를 만들 수 있습니다.
먼저 제한된 문서에 대해 정적으로 캐시 된 ID 목록과 비교하여 문서에 권한 부여가 필요한지 여부를 확인합니다.
그런 다음 문서가 제한되면 필터는 현재 사용자에게 권한이 있는지 확인합니다. 사용자에게 권한이 부여되면 작업이 정상적으로 렌더링됩니다. 그렇지 않은 경우 작업 결과는 401/403 (적절한 경우) 또는 기본 "인증되지 않은"페이지로 리디렉션되어야합니다.