跟踪 - 站点范围的登录


Trac - site wide login

我已经将Trac安装为一个较大网站的子集。 理想情况下,我希望能够将用户从主站点登录到 trac,而无需使用 trac 界面本身。 主站点在 IIS 上的 PHP 中实现。 此外,如果用户通过Trac登录,那么我希望能够根据用户权限从某些PHP页面提供对其他功能的访问。

身份验证在 trac 中使用 htpasswd 文件,能够通过 trac 接口管理用户很有用。 此外,相同的用户/通行证将用于 Subversion,因为这可以使用 htpasswd 文件。 我不能将其与 IIS 一起使用,以通过虚拟路径和身份验证角色进行登录。 我不想使用 LDAP/ActiveDirectory

能够在PHP中实现一个登录页面,该页面实际上将用户登录到Trac中,那就太好了。 但是,我不确定如何在PHP页面中添加适当的__FORM_TOKEN字段。 使用trac登录页面本身是可以的,但是登录后,如果它不是网站trac部分的子URL,它会转到trac wiki主页,而不是我在表单数据中设置的引用。

此外,能够查询当前从 PHP 登录到 trac 的用户的权限也会很方便。 大概这可以通过 sqlite 数据库实现,但我怎么知道当前用户是谁?

最终从

trac 根的子 url 为我的 PHP 登录表单生成了trac_form_token cookie(从 IIS 中覆盖该子 URL,以便它不是由 trac 处理,而是由 php 处理(。 很容易做到。

如果您将 trac 配置为将trac_auth cookie 的路径设置为站点的根目录,则检查登录用户很容易。 然后,您可以访问它并从 PHP 查询 trac sqlite 数据库以获取用户名和权限。

然后,对于 PHP 登录,您生成trac_form_token并向 trac 执行 POST curl 请求,然后从返回的响应标头传递所需的 cookie。

编辑:更改为trac.ini以使trac_auth cookie在整个站点范围内可用,而不仅仅是从/trac/

[trac] 
auth_cookie_path = '