![是否可以使用 SVN 的 API 授予对 SVN 服务器中文件夹的访问权限?](https://linux22.com/image/1385047/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SVN%20%E7%9A%84%20API%20%E6%8E%88%E4%BA%88%E5%AF%B9%20SVN%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%E8%AE%BF%E9%97%AE%E6%9D%83%E9%99%90%EF%BC%9F.png)
我需要开发一个 Web 应用程序(使用任何语言,但我熟悉框架 Symfony2 和 Rails),该应用程序能够从应用程序的前端授予用户对同一网络上另一台服务器上的确定文件夹的访问权限。
我发现 SVN 有一个 API,而且我可以使用 PHP 或 Ruby(显然)与它进行交互,尽管我愿意使用另一种语言来编写应用程序,但存储文件的服务器使用的是 Windows,而且我考虑使用虚拟 SVN 服务器,但是我找不到 API 上的任何函数来授予用户对文件和/或文件夹的访问权限或任何类型的访问权限,就像您通常使用 GUI(Windows 上的 VirtualSVN)一样。
我遗漏了什么吗?这可能吗?
答案1
这是可能的,但是具体如何做取决于您使用什么来为 Subversion 存储库提供服务;Subversion 本身不指定访问控制方法,而是将这些问题留给您用来向客户端公开存储库的软件来解决。
(这实际上比在 Subversion 内部进行访问控制更可取,因为它更加模块化,因此更容易扩展;通过 Apache 提供服务的 Subversion 存储库可以使用 Apache 支持的任何访问控制方法,而不必将每个这样的方法作为 Subversion 源代码树的一部分重新实现。)
svnserve
如果你通过 Apache 或Subversion 发行版附带的工具来提供存储库,则可以在以下位置找到有关如何配置访问控制的详细信息:第 6 章使用 Subversion 进行版本控制,可在线免费获取。否则,请查阅服务器软件的文档以获取有关如何设置所需访问控制选项的更多详细信息。
最后一点:您描述的 PHP 和 Ruby API 是 Subversion 客户端的实现,这在开发应用程序代码时几乎肯定会很有用,但不会帮助您处理服务器端访问控制。为此,您需要找到某种方法,要么安全地允许您的应用程序代码修改存储库服务器的配置(冒险),要么让您的应用程序与身份验证/授权数据库集成,存储库服务器使用该数据库来找出谁被允许进入存储库的哪个位置以及执行哪些操作。