2011-02-12 7 views
0

로컬로 mod_wsgi (http : // localhost/...)를 실행중인 web.py 앱이 있습니다. 내 애플 리케이션에 인증을 추가하고 web.py의 내장 모듈을 사용하려고했다. 나는 여기 간단한 예제로 시작 : http://log.liminastudio.com/programming/howto-use-openid-with-web-pyweb.py와 web.webopenid를 사용하여 사용자 인증

import web, web.webopenid 

urls = (
    r'/openid', 'web.webopenid.host', 
    r'/', 'Index' 
) 

app = web.application(urls, globals()) 

class Index: 
    def GET(self): 
     body = ''' 
     <html><head><title>Web.py OpenID Test</title></head> 
     <body> 
      %s 
     </body> 
     </html> 
     ''' % (web.webopenid.form('/openid')) 

     return body 

if __name__ == "__main__": app.run() 

이 충분히 터미널에서 실행 및 http://localhost:8080/에가는 작동합니다. 또 다른 예로 http://c-farrell.blogspot.com/2010/11/usrbinenv-pythonimport-webfrom-web.html도 비슷한 기술을 사용하지만 나에게 더 의미가 있습니다.

#!/usr/bin/env python 
import web 
from web import webopenid 
urls = (
'/', 'index', 
'/openid', 'webopenid.host', 
) 

... more code ... 

class index: 
    def GET(self): 
    oid = webopenid.status() 
    if not oid: 
     return 'please log in: ' + \ 
     webopenid.form('/openid') 
    else: 
     return 'you are logged in as:' + \ 
       webopenid.form('/openid') 

여기가 조금 어둡습니다. 내가 말할 수있는 바에 따르면 form에 전달 된 인수는 로그인 한 후 반환 URL입니다. 예를 들어, 'http://www.yahoo.com/'을 입력하면 모든 로그인 시도 후에 거기로 이동하게됩니다. 나는 이것이 내 자신의 컨트롤러를 다시 가리켜 야한다고 생각하지만 컨벤션은 web.webopenid.host 컨트롤러를 사용하는 것으로 보입니다.이 컨트롤러는 ID를 처리하고 기본 '/'URL로 리턴합니다. 나는 거기에 가고 있다고 생각하지만 반환 된 상태는 항상 None입니다.

내가 수집 한 것부터 이것은 코드 문제이거나 아파치 설정에 인증 기능이 작동하지 않는 것입니다. web.webopenid에서 라이브러리는 웹 서버와 동일한 디렉토리에 .openid_secret_key 파일을 만듭니다. 예제 코드를 실행하면 이것이 생성됩니다. 아파치를 통해 코드를 실행할 때 (최소한 cgi-bin에 있지 않습니다.) 어쨌든,이 파일이 생성되거나 매번 다시 생성되지 않으면 로그인이 유지되지 않습니다. web.py 웹 서버를 통해 내 응용 프로그램을 실행하려고 시도했을 때 아파치 문제라고 생각하고 파일을 생성하고 인증 할 수있었습니다. 필자가 결론을 내릴 수있는 것은이 파일이 쓰여지고 있지 않으며 모든 후속 쿼리가 새 파일을 시도하기 때문에 결코 인증 할 수 없다는 것입니다. 어떤 아파치/mod_wsgi 전문가가이 파일을 쓰고 있는지 또는 이것이 실제 문제인지 설명해 줄 수 있습니까?

답변

0

mod_wsgi 목록에서 같은 질문에 대한 대답으로이 문제가 발생했을 가능성이 가장 높습니다. 참조 :

https://groups.google.com/d/msg/modwsgi/iL65jNeY5jA/KgEq33E8548J

그것은 아마 처음 두의 조합, 현재 작업 디렉토리와 아파치 사용자 액세스 권한입니다.

+0

나는/tmp에 직접 쓰도록 라이브러리를 수정했지만 여전히 성공하지 못했습니다. 아직 파일 문제라고 확신하지 못합니다. – voodoogiant

관련 문제