Web服务需要检查用户

时间:2015-09-01 19:29:33

标签: c# file-permissions

我们有一个asp.net mvc Web服务,它需要能够检查网络文件夹上的NTFS权限,并将只有那些文件夹和文件的列表返回给用户有权查看的UI。我们无法使用假冒行为。我们将如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

在解决这个问题时,我发现这个问题很有帮助,但它并不能完全满足我们的需求:
Effective file permissions tool's api in windows。感谢@YacoubMassad将我指向了这个方向。使用此代码,我创建了一个有效的权限服务来检查读取权限,但我遇到了一个意外的问题。该服务适用于用户具有查看权限的文件夹,但它会错误地为其他人返回true,因为它没有为它们返回掩码。结果是我的服务显示了用户未被授权查看的文件夹列表。我猜我可以改变我的服务来解决这个问题,但它变得越来越复杂了。

我选择的解决方案并不优雅,但简单而有效。我写了一个为每个目录调用GetDirectories()的方法。对于GetDirectories()成功执行的每个目录,路径将添加到返回到视图的列表中。由于我们的权限是在目录级别处理的,所以这是我需要的。我也处理文件上的任何UnauthorizedAccessExceptions,以防万一在那个级别设置权限。

        public IList<FilePathObject> PopulateAuthorizedPathList()
        {
            IList<FilePathObject> authorizedPathList = new List<FilePathObject>();
            foreach (FilePathObject pathObject in fullPathList)
            {
                var dir = new DirectoryInfo(pathObject.FullPath);
                if (dir.Exists)
                {
                    try
                    {
                        var info = dir.GetDirectories();
                        authorizedPathList.Add(pathObject);
                    }
                    catch (UnauthorizedAccessException ex)
                    {

                    }
                }
            }
            return authorizedPathList;
        }