2014-01-28 3 views
0

우리는 네트워크 드라이브에 100,000 명 정도의 많은 WMV9 비디오 (200k와 비슷한 것)를 가지고 있습니다. 기본 허용은 사용자가 비디오를 읽을 수 없다는 것입니다. 이 비디오를 "토토"그룹의 회원과 "SpecialFonction"사용자가 읽을 수 있으며 이러한 권한을 변경할 수 있다고 말할 수있는 시스템을 구축해야합니다. 데이터베이스에네트워크 드라이브에서 비디오 파일 권한 부여를 처리하는 방법

  • 스토어 권리 :

    우리는 다음과 같은 시나리오 considier 있습니다. 사용자 당 하나의 폴더를 만듭니다. 사용자가 볼 수있는 비디오를 요청하면 파일이 해당 폴더에 복제됩니다. 그의 폴더는 매주 청소됩니다.

  • 비디오를 스트리밍하고 권한을 처리하는 웹 사이트를 구축하십시오. (로드가 480p에서 중요 할 것이라고 생각하십니까?)

  • 모든 비디오를 네트워크 드라이브 (각 비디오의 고유 키)로 암호화하십시오. 사용자 자격 증명으로 비디오의 키를 요청하고 즉시 비디오의 암호 해독 및 해독을 처리하는 WPF 응용 프로그램을 만듭니다. (이미 비디오 재생을위한 WPF 앱이 있음)

  • 데이터베이스에 권한을 저장하십시오. 비디오 파일과 데이터베이스에 대한 NTFS 권한을 동기화하는 C# 프로그램을 만듭니다.

어느 것이 가장 좋으니까? 다른 대안이 있습니까?

답변

1

당신은 응용 프로그램의 각 User는 각 파일에 대해하거나 폴더 수 Security 개체를 만들 수 있습니다 당신은 데이터베이스에 있음을 저장해야합니다. 그런 다음 비디오 파일을 특정 사용자가 설정된 네트워크 드라이브로 이동할 수 있습니다. 해당 사용자가 파일에 액세스 할 수 있도록 네트워크 드라이브에 대한 사용 권한을 설정하십시오.

해결책의 마지막 부분은 WindowsIdentity.Impersonate Method을 사용하여 해당 사용자를 응용 프로그램에서 가장하여 비디오 파일에 액세스하는 것입니다. 링크 된 페이지에서이 코드를 사용하는 방법에 대한 전체 코드 예제 및 설명이 있지만 예를 들어, 가장 좋은 코드로 가장 코드를 넣으면 다음과 같이 보호 된 폴더로 파일을 이동할 수 있습니다.

using (ImpersonationManager impersonationManager = new ImpersonationManager()) 
{ 
    impersonationManager.Impersonate(Settings.Default.Domain, 
     Settings.Default.UserName, Settings.Default.Password); 
    Directory.CreateDirectory(Path.GetDirectoryName(filePath)); 
    if (File.Exists(filePath)) File.Delete(filePath); 
    File.Move(inputFilePath, filePath); 
} 
+0

이 사운드는 정말 흥미 롭습니다. ActiveDirectory에없는 Linux 서버 및/또는 Windows 서버에서 작동합니까? – Pak

+0

'WindowsIdentity'와 같은 이름으로, 나는 리눅스에서 작동 할 것입니다. – Sheridan

+0

실제로 일부 rsearch와 함께 내 의견에 대한 답변을 찾았습니다 : http://stackoverflow.com/questions/3700871/connect-to-network-drive-with-user-name-and-password – Pak