在开始进行开放式身份验证的一些测试代码之后,我休息一下,当我回来时,发现自己面对来自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()
有什么东西改变了吗?还是我做了一些蠢事?感谢。
答案 0 :(得分:4)
您将/
设置为login: required
,这意味着您必须先登录才能访问它。
您很可能在login: required
没有app.yaml
的情况下进行测试,并且您已经登录。您添加了该行,一切看起来都不错,但是一旦您注销或重新启动服务器,没有登录,所以你得到了这个错误。
您应该重新考虑您的URL映射以及哪些URL应该具有该参数,哪些不具有该参数,以免破坏体验。如果用户未登录或显示不同的响应,请考虑使用重定向。