2014-01-30 7 views
0

웹 양식을 사용하는 대신 프로그래밍 방식으로 POST를 시도하고 있습니다. 이렇게하려면 https://pypi.python.org/pypi/MultipartPostHandler/에서 다운로드 한 MultipartPostHander 모듈을 사용하고 있습니다.get_current_user()는 MultipartPostHandler를 사용하여 POST 요청 후 None을 반환합니다.

users.get_current_user()가 POST 페이지 핸들러에서 None을 반환한다는 점을 제외하고는 제대로 작동하는 것처럼 보입니다 (즉, 웹 양식 POST 요청과 동일한 작업을 수행함). 비교해 보면 POST 요청이 웹 양식에 의해 제출 된 경우 동일한 POST 페이지 핸들러가 사용자 정보를 올바르게 반환합니다.

포스터 (http://atlee.ca/software/poster/index.html)로 시도해도 똑같은 문제가 있습니다.

왜 이런 일이 일어날 수 있습니까? 미리 감사드립니다.

class first_page_handler(basehandler.BaseHandler): 
    def get(self): 
     user = users.get_current_user() 
     if user: 
      raw_upload_url = webapp2.uri_for('test_module') 
      qimage_upload_url = r'http://localhost:8080'+raw_upload_url 
      params = {'param1': 'param'} 

      opener = urllib2.build_opener(multipost.MultipartPostHandler) 
      urllib2.install_opener(opener) 
      req = urllib2.Request(qimage_upload_url, params) 

      response = urllib2.urlopen(req) # <<<< POST request submitted 
      text_response = response.read().strip() 
      return self.response.write("<html><body><p>"+text_response+"</p></body> 
             </html>") 
     else: 
      login_url = users.create_login_url("/admin") 
      context = {'login_url': login_url} 
      self.render_response('admin/login.html', **context) 

class post_page_hander(basehandler.BaseHandler): 
    def post(self): 
     user = users.get_current_user() # << Returns NONE 
     return self.response.write("<html><body><p>"+user.email()+"</p></body></html>") 

답변

0

요청시 쿠키를 설정하지 않으므로 서버는 현재 사용자의 상태를 알 수 없습니다. (당신이하고있는 일은 드문 일입니다 ...하고 싶은 일을 할 수있는 더 좋은 방법이있을 것입니다.)

+0

Greg에게 감사드립니다. 요청이 웹 양식을 통해 제출 될 때 왜 같은 문제가 발생하지 않는지 궁금합니다. 쿠키도 거기에 넣지 않았기 때문에. 어떻게 다른지 설명해 주시겠습니까? –

+0

로그인하면 (또는 SDK에 로그인 한 것처럼) 쿠키가 설정되면 브라우저는 자동으로 요청을 도메인으로 보냅니다. 사용자 서비스를 사용하여 현재 사용자를 얻으면 쿠키를 사용합니다. – Greg

+0

도움 주셔서 감사합니다! –

관련 문제