python-Google App Engine身份验证失败

在处理了一些用于开放ID身份验证的测试代码之后,我休息了一段时间,回来后发现自己面对着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()

有什么变化吗?还是我做了一些愚蠢的事情?谢谢.

解决方法:

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

最有可能您未登录即进行测试:app.yaml中为必填项,并且您已经登录.添加了该行,一切看起来都很好,但是一旦注销或重新启动服务器,您就不再登录了,因此得到了那个错误.

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

上一篇:php-如何将简单的openid与站点的现有日志记录系统集成?


下一篇:python-使用Django的openid