Python/WebApp谷歌应用程序引擎-在标题中测试用户/通过
当您这样调用web服务时:Python/WebApp谷歌应用程序引擎-在标题中测试用户/通过,python,google-app-engine,web-applications,Python,Google App Engine,Web Applications,当您这样调用web服务时: username = 'test12' password = 'test34' client = httplib2.Http(".cache") client.add_credentials(username,password) URL = "http://localhost:8080/wyWebServiceTest" response, content = client.request(URL) 如何将用户名/密码输入到
username = 'test12'
password = 'test34'
client = httplib2.Http(".cache")
client.add_credentials(username,password)
URL = "http://localhost:8080/wyWebServiceTest"
response, content = client.request(URL)
如何将用户名/密码输入到服务器端的变量中(即我正在编写的web服务中)。
我检查了self.request.headers和self.request.environ,没有找到它们
(我没有使用Google登录,需要在我自己的数据库中弹出此用户ID/密码以验证安全性。)
我试图从这一页中找到一些想法:
谢谢
尼尔·沃尔特斯
以下是对Peter代码的轻微增强:
auth = None
if 'Authorization' in self.request.headers:
auth = self.request.headers['Authorization']
if not auth:
httplib2将仅在web服务器发出401响应后传递凭据,之后应在Authorization:标头中发送凭据。凭据将显示在Authorization标头中。步骤如下所示:
username = 'test12'
password = 'test34'
client = httplib2.Http(".cache")
client.add_credentials(username,password)
URL = "http://localhost:8080/wyWebServiceTest"
response, content = client.request(URL)
步骤3中客户端授权头的确切内容取决于所使用的授权方法。对于HTTP基本身份验证,它是base64编码的用户凭据-请参阅。对于HTTP digest auth,服务器的头和客户端的响应都有点复杂-请参阅。我还没有测试这段代码(插入smiley),但我认为这是您需要的。基本上,如果您的服务器没有将401回复到您的客户机,那么您的凭据将不会出现在标题中(客户机需要知道要提供什么凭据的领域)
我很困惑。你们是说第一个调用并没有凭证,然后服务器返回401,然后客户端自动发送user/pass?但是无论如何-用户/通行证可用于web服务,对吗?上面的代码片段是在我的机器上运行的非GAE程序,它调用GAE web服务。它在web服务中,我想检查用户/通行证。(很高兴看到你的照片-我一直看到你的谷歌群)。在其他答案之后,现在就知道了。谢谢。这正是医生要的!谢谢我添加了“import base64”,并做了一个小改动——请参阅我的原始帖子的编辑。一个吹毛求疵的地方:作为一名装饰师,这会更好。:)这完全应该作为一个装饰师来完成。我只是想展示核心代码。感谢您的回复,特别是解释编码的链接。关于装饰器的好主意-但是我不停地花一天时间在它上面。以下是我的粗略尝试: