2013-10-01 168 views
1

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

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

很高兴能够在PHP中实现一个登录页面,它实际上将用户记录到Trac中。但我不确定如何在PHP页面中添加适当的__FORM_TOKEN字段。这将是蛮好用的自身Trac的登录页面,但登录后,它进入Trac的维基主页,而不是我在表单数据集引用者如果不是网站的TRAC部分的子网址。

而且这将是得心应手能够查询权限当前登录到TRAC从PHP用户。据推测,这可能通过sqlite数据库,但我怎么知道谁是当前用户?

回答

2

自己为我的PHP登录表单创建trac_form_token cookie,从trac根的子url(在IIS中覆盖该子url以便它不由trac处理,而是由php代替)处理。容易做到。

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

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

编辑:改变trac.ini使trac_auth Cookie中提供的网站范围,而不仅仅是从/ TRAC/

[trac] 
auth_cookie_path = \ 
+0

皮特!我很想看看你是如何做到这一点的。我很想复制这个,目前我运行一个Linux的盒子,主要是一个PHP/Apache/MySQL后端。我还没有尝试过实现任何东西,因为我们使用一个简单的文本文件进行身份验证,这让我感到非常紧张。我很想用超时的方式实现一个数据库驱动的登录,所以你不能蛮横的强制它,但是我的python ju-ju没有达到跟踪的标准。 任何如何,希望听到更多有关您的过程的笔记。 (和耶士我知道IM晚了3年就这一点;)) – Gauthier

+0

@Gauthier这不围绕在我的情况下使用的Trac两种但htpasswd文档得到允许双登录TRAC并通过烧毛Web表单的主要场所。它真的很复杂,不幸的是我不能分享源代码。它不需要对python源文件进行任何更改。您可以使用PHP中的SQLite3访问trac数据库。 e,g,以获得trac用户名: 'SELECT name FROM auth_cookie WHERE cookie =''.SQLite3 :: escapeString($ _ COOKIE ['trac_auth'])。'''' – Pete

+0

@Gauthier - 基本上在我的数据库中, trac以用户登录登录并在适当的时候将用户登录到两者。我相信有trac登录插件,但上次我看它是一个完全雷区。 – Pete