2013-10-01 4 views
1

Trac을 더 큰 웹 사이트의 하위 집합으로 설치했습니다. 이상적으로 trac 인터페이스 자체를 사용하지 않고도 주 사이트에서 사용자를 trac에 로그인 할 수 있기를 원합니다. 기본 사이트는 IIS에서 PHP로 구현됩니다. 또한 사용자가 Trac을 통해 로그인 한 경우 사용자 권한을 기반으로 일부 PHP 페이지에서 다른 기능에 대한 액세스를 제공 할 수 있기를 바랍니다.Trac - site wide login

인증은 trac에서 htpasswd 파일을 사용하며 trac 인터페이스를 통해 사용자를 관리 할 수 ​​있다는 것이 유용합니다. 또한 htpasswd 파일을 사용할 수 있으므로 동일한 사용자/패스가 파괴에 사용됩니다. IIS에서 가상 경로 및 인증 역할을 통한 로그인을 수행 할 때 사용할 수 없습니다. LDAP/ActiveDirectory를 사용하고 싶지 않습니다.

실제로 Trac에 로그인하는 PHP 로그인 페이지를 구현하는 것이 좋을 것 같습니다. 그러나 나는 PHP 페이지에서 적절한 __FORM_TOKEN 필드를 어떻게 추가 할 것인지 확신 할 수 없습니다. trac 로그인 페이지 자체를 사용하는 것이 좋겠지 만 로그인 한 후에 사이트의 trac 부분의 하위 URL이 아닌 경우 양식 데이터에 설정된 참조 자 대신 trac 위키 홈 페이지로 이동합니다 .

또한 현재 PHP에서 trac에 로그인 한 사용자에 대한 권한을 쿼리 할 수 ​​있으면 편리 할 것입니다. 아마도 이것은 sqlite 데이터베이스를 통해 가능하지만 현재 사용자가 누구인지 어떻게 알 수 있습니까?

답변

2

Trac 루트의 하위 URL (trac 루트가 아닌 하위 URL을 재정의하여 trac에 의해 처리되지 않고 php로 대신 처리되도록 함)에 대한 PHP 로그인 양식에 대한 직접 trac_form_token 쿠키 생성이 끝났습니다. 충분히 쉽게 할 수 있습니다.

trac_auth 쿠키의 경로를 사이트의 루트로 설정하도록 trac를 구성하면 로그인 한 사용자를 확인하는 것이 쉽습니다. 그런 다음 이것을 액세스하고 PHP에서 trac sqlite 데이터베이스를 쿼리하여 사용자 이름과 권한을 얻을 수 있습니다.

PHP 로그인의 경우 trac_form_token을 생성하고 trac에 대한 POST 컬링 요청을 수행 한 다음 반환 된 응답 헤더에서 필요한 쿠키를 전달합니다.

편집 : 변화 할 trac.ini하는 trac_auth 쿠키 가능한 사이트 전체

[trac] 
auth_cookie_path = \ 
+0

피트 /뿐 아니라 TRAC /에서! 나는 당신이 이것을 성취 한 방법에 대한 자료를 보는 것에 관심을 가질 것이다. 나는 이것을 복제하고 싶다. 현재는 리눅스 박스와 대부분 PHP/아파치/MySQL 백엔드를 돌린다. 나는 우리가 견과를 몰아내는 auth를 위해 간단한 텍스트 파일을 사용하면서 아무 것도 구현하려하지 않았다. 시간 제한이있는 데이터베이스 구동 로그인을 구현하고 싶다면 무언가를 무시할 수는 없지만 파이썬 ju-ju는 트랙과 동등하지 않습니다. 어떤 방법으로 귀하의 프로세스에 대한 추가 정보를 듣고 싶습니다. (그리고 yess는 3 년 뒤에 이것을 알고 있습니다;)) – Gauthier

+0

@Gauthier이 경우 trac에서 사용하는 htpasswd 파일을 사용하지는 않지만 trac에 대한 이중 로그인과 단일 웹 양식을 통한 기본 사이트를 허용합니다. 매우 복잡하고 불행히도 소스 코드를 공유 할 수 없습니다. 그것은 파이썬 소스를 변경하지 않아도되었습니다. PHP의 SQLite3를 사용하여 trac 데이터베이스에 액세스 할 수 있습니다. e, g, trac 사용자 이름을 얻으려면 : 'auth_cookie WHERE cookie = "'.SQLite3 :: escapeString ($ _ COOKIE [ 'trac_auth']) '.'" ' – Pete

+0

@Gauthier - 본질적으로 데이터베이스에 trac 로그인을 사용하여 로그인하고 적절한 경우 둘 모두에 사용자를 기록하십시오. 나는 trac 로그인을위한 플러그인이 있다고 믿지만, 마지막으로 나는 그것이 지뢰밭 이었음을 보았다. – Pete

관련 문제