【问题标题】:Django basic authentication in functional View功能视图中的 Django 基本身份验证
【发布时间】:2013-01-18 14:26:44
【问题描述】:

我希望将基本身份验证机制应用于我的视图函数中的函数。

我有一些通过模板返回 JSON 数据的视图函数。如果我通过网络浏览器访问我的应用程序,我希望收到一个登录对话框提示,否则 Authorization 标头用于 RESTFUL API

我查看了 TastyPie 文档,但找不到任何关于如何以这种方式使用它的示例。

例如在 view.py 文件中,我有以下内容:

def userIndex(request):
    some_list = Some.objects.order_by('pub_date')

    return render_to_response('myapp/data.json',
                          {'some_list': some_list,},
                          mimetype="text/json")

如何将授权检查应用于上述内容?

【问题讨论】:

  • 如何通过ajax调用你的视图?
  • 如果 sweetpie 有一个内置的方法来装饰你的函数会很好(我不知道他们是否这样做),但如果最糟糕的是你可以使用他们的代码轻松编写一个装饰器github.com/toastdriven/django-tastypie/blob/master/tastypie/…
  • 我正在使用调用查看 urls.py 中的 URL
  • 如果我有装饰器,那将是理想的。我会查看代码,看看是否可以实现自己的(尽管我更喜欢现成的可靠的东西)

标签: python django django-views basic-authentication tastypie


【解决方案1】:

您无需区分浏览器访问和 API 调用。如果您遵循 HTTP 基本身份验证规范,浏览器将显示登录对话框,而您的视图没有做任何特殊的事情。

这是一个实现基本身份验证检查的装饰器:http://djangosnippets.org/snippets/243/。它根据标准用户表检查用户名/密码。

【讨论】:

  • 嗨,谢谢..我以前用过这个。但我发现它大大减慢了我的请求响应速度(不知道为什么)。我只是想知道是否还有另一个装饰器
  • 据我所知,Django 没有提供任何基本身份验证的实现,您需要找到一些外部的。我不确定这个实现在多大程度上减慢了你的视图,我猜它执行了两个额外的数据库查询:一个到会话表,一个到用户表,这会引入一些开销,但如果你想从一个D b。您还可以考虑在前端服务器(nginx 或 apache)中启用基本身份验证。它肯定会快得多,但您将无法使用 Django 用户名和密码。
  • 嗨,我最终在我的前端服务器中启用了基本身份验证......似乎工作正常。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2018-03-07
  • 2020-07-21
  • 2015-11-12
  • 2015-08-03
  • 1970-01-01
  • 2011-10-01
相关资源
最近更新 更多