appcfg.py shows You must be logged in as an administrator

后端 未结 5 1696
情歌与酒
情歌与酒 2021-01-18 00:55

When I try to upload a sample csv data to my GAE app through appcfg.py, it shows the below 401 error.

2015-11-04 10:44:41,820 INFO client.py:571         


        
5条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-18 01:23

    This is how we do it in order to use custom authentication.

    Custom handler in app.yaml

    - url: /remoteapi.*
      script: remote_api.app
    

    Custom wsgi app in remote_api.py to override CheckIsAdmin

    from google.appengine.ext.remote_api import handler
    from google.appengine.ext import webapp
    import re
    
    MY_SECRET_KEY = 'MAKE UP PASSWORD HERE'  # make one up, use the same one in the shell command
    cookie_re = re.compile('^"?([^:]+):.*"?$')
    
    
    class ApiCallHandler(handler.ApiCallHandler):
        def CheckIsAdmin(self):
            """Determine if admin access should be granted based on the
               auth cookie passed with the request."""
            login_cookie = self.request.cookies.get('dev_appserver_login', '')
            match = cookie_re.search(login_cookie)
            if (match and match.group(1) == MY_SECRET_KEY
                and 'X-appcfg-api-version' in self.request.headers):
                return True
            else:
                self.redirect('/_ah/login')
                return False
    
    
    app = webapp.WSGIApplication([('.*', ApiCallHandler)])
    

    From here we script the uploading of data that was exported from our live app. Use the same password that you made up in the python script above.

    echo "MAKE UP PASSWORD HERE" | appcfg.py upload_data --email=some@example.org --passin --url=http://localhost:8080/remoteapi --num_threads=4 --kind=WebHook --filename=webhook.data --db_filename=bulkloader-progress-webhook.sql3
    

    WebHook and webhook.data are specific to the Kind that we exported from production.

提交回复
热议问题