我们在网络驱动器和大约100个用户中有很多WMV9视频(类似于200k)。基本的认可是用户无法阅读视频。 我们需要建立一个系统,你可以说这个视频可以由groupe“Toto”的成员和用户“SpecialFonction”读取,并且这些权利可以被更改。
我们对以下情况更为重要:
将权限存储在数据库中。每个用户创建一个文件夹。 当用户请求允许他看到的视频时,该文件在其文件夹中是重复的。 他的文件夹将每周清理一次。
构建一个流式传输视频并处理权利的网站。 (你认为负载对480p很重要吗?)
加密网络驱动器上的所有视频(每个视频的唯一键)。创建一个WPF应用程序,该应用程序使用用户凭据请求视频密钥,并动态处理视频的解密和解码。 (我们已经有一个用于播放视频的WPF应用程序)
将权限存储在数据库中。 创建一个C#程序,用于同步视频文件和数据库的NTFS权限。
您认为哪种方式最好?还有其他选择吗?
答案 0 :(得分:1)
您可以创建应用程序中每个Security
可以为每个文件或文件夹创建的User
个对象,并且您需要将 存储在数据库中。然后,您的视频文件可能会在其上设置了特定用户的网络驱动器上运行。将网络驱动器上的权限设置为仅允许该用户访问文件。
解决方案的最后一部分是使用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);
}