在处理了一些用于开放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不具有该参数,以免破坏体验.如果用户未登录或显示其他响应,请考虑也使用重定向.