我在TRAC有多个项目。我正在使用mod_wsgi,我的wsgi脚本文件TRAC_ENV_PARENT_DIR变量指向包含所有这些项目的文件夹的文件夹。一些用户可以访问不同的项目。当用户访问TRAC URL时,她可以看到包含所有这些项目的列表,但却无法访问其中一些项目。 有没有办法只向用户显示该用户有权访问的项目? 请指教。
答案 0 :(得分:0)
序言:我通过默默无闻来憎恶安全。您的请求可以在网站演示中作为化妆品阅读。不要以提高访问控制为目标,因为知道有效路径仍然可以根据其设置访问每个Trac环境。当然,更好的导航是一个很好的理由。
要求根据用户的权限隐藏文件夹意味着您需要在授予TRAC_ENV_PARENT_DIR
访问权限之前进行身份验证。这可以使用Web服务器支持的标准机制来完成。这只是前提条件。
正如您所说,Trac环境文件夹集合中有一些非公共Trac实例。正确识别所有文件夹有多复杂,这取决于您希望在初始实施与维护上花费多少。
我应该是微不足道的,但容易出错,提供公共或私人目录的列表,当然更容易维护。零附加配置需要打开每个Trac环境并查找用户权限。 )**这听起来相当麻烦,对于具有大量用户群和频繁访问的应用程序而言可能意味着性能损失。如果你走这条路,你至少会使用缓存列表。
您无法使用Trac自动生成的可用项目列表,但您必须至少提供两个版本的索引页面,用于经过身份验证/未经过身份验证且经过身份验证的和特权用户。
为了维护,您需要整合配置和权限。要访问每个Trac环境,您可以使用trac.ini
继承和共享的.htpasswd文件。但是,您无法继承权限,因为这些设置存储在Trac数据库中。你可以给TracUserSyncPlugin一个镜头,但它似乎还不适合制作,或者至少缺乏所有快乐用户的反馈(如果存在的话)。
)**虽然我不知道有关此的专门文档,但实际上有几种可能性。由于权限存储在Trac数据库中,所有权限都涉及读取/查询permission
db表。它的结构与the Trac db schema的所有其他表一起记录。要阅读,您需要打开Trac环境,然后在表格上使用直接查询(请参阅an example的AccountManagerPlugin变更集)或构建和query a PermissionCache object。
答案 1 :(得分:0)
这可能是一个老问题,但到目前为止,我发现答案相当复杂,没有必要。
我认为使用此处所述的信息http://trac.edgewall.org/wiki/TracInterfaceCustomization#ProjectList,可以构建一个模板来检查用户和权限,然后显示它应该的数据。
在我的情况下,我只需要指出" TRAC_ENV_INDEX_TEMPLATE"变量为空白HTML,这对我来说已经足够了。