【问题标题】:how to add authentication to a wsgiref python web service如何向 wsgiref python Web 服务添加身份验证
【发布时间】:2012-09-27 04:43:31
【问题描述】:

我正在编写python文档中给出的示例代码,代码是:

from wsgiref.simple_server import make_server, demo_app

httpd = make_server('', 8000, demo_app)
print "Serving HTTP on port 8000..."

# Respond to requests until process is killed
httpd.serve_forever()

# Alternative: serve one request, then exit
httpd.handle_request()

我可以通过端口 8000 上的 localhost 访问它,但现在如果我想使用“localhost:8000 用户名、密码”传递用户名/密码,我该怎么做。我已经知道如何知道身份验证是否不成功,但不知道如何实际接收用户名/密码以进行检查..

任何提示和技巧.....

干杯,

【问题讨论】:

  • 最好为用户生成 API 密钥,他们将其用作查询字符串的 key=xxx 参数...然后您验证它是否是有效密钥并提供内容...跨度>
  • @Joran,感谢您的提示,但我这里没有选项。您可能知道的任何变通方法?
  • 只需让他们添加 user=xxx&pass=xxx 并在您提供之前对其进行验证...但这不是很安全,因为大多数用户将通过不安全的连接发送他们的凭据
  • 是的,但是如何做到这一点,你有任何示例代码...
  • 我不知道如何使用 wsgiref ...但在 django 中它会类似于 django 中的ideone.com/0smDW...

标签: python basic-authentication wsgiref


【解决方案1】:

如果您在查询字符串中传递用户名/密码,例如http://localhost:8000?username=x&password=y,您可以在您的 WSGI 处理函数中从环境字典中检索它们:environ['QUERY_STRING']。您可以使用标准库中的urlparse.parse_qs 来解析它。如果这是要投入生产的代码,我支持 Joran,您应该至少使用 HTTP 基本身份验证和一些身份验证中间件,例如 barrel

【讨论】:

  • 非常感谢,是的,我肯定会调查桶。但目前这适用于演示。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2017-01-28
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多