Google App Engine身份验证失败

时间:2012-06-26 10:18:55

标签: python google-app-engine openid

在开始进行开放式身份验证的一些测试代码之后,我休息一下,当我回来时,发现自己面对来自GAE的这个奇怪的警告信息:

Error: Unauthorized
Your client does not have permission to the requested URL /.

以下是我用于.pl代码和.yaml

的代码
version: 1
runtime: python
api_version: 1

builtins:
- remote_api: on

handlers:
- url: /
  script: do_openid_login.py
  login: required
  auth_fail_action: unauthorized

- url: /_ah/login_required
  script: do_openid_login.py
  login: required
  auth_fail_action: unauthorized

class MyLogin(webapp.RequestHandler):
    def get(self):
        user = users.get_current_user()
        if user:
            greeting = ("Welcome, %s %s %s! (<a href=\"%s\">sign out</a>)" %
                        (user.nickname(), user.email(), user.user_id(), users.create_logout_url("/")))
        else:
            greeting = ("<a href=\"%s\">Sign in or register</a>." %
                        users.create_login_url("/"))

        self.response.out.write("<html><body>%s</body></html>" % greeting)


application = webapp.WSGIApplication([
  ('/', MyLogin),
], debug=True)


def main():
  run_wsgi_app(application)

if __name__ == '__main__':
  main()

有什么东西改变了吗?还是我做了一些蠢事?感谢。

1 个答案:

答案 0 :(得分:4)

您将/设置为login: required,这意味着您必须先登录才能访问它。

您很可能在login: required没有app.yaml的情况下进行测试,并且您已经登录。您添加了该行,一切看起来都不错,但是一旦您注销或重新启动服务器,没有登录,所以你得到了这个错误。

您应该重新考虑您的URL映射以及哪些URL应该具有该参数,哪些不具有该参数,以免破坏体验。如果用户未登录或显示不同的响应,请考虑使用重定向。