是否有 Django 和 Tastypie 的基本身份验证示例?我对 Django 中的身份验证如何工作,特别是 Tastypie 有点困惑。我想知道身份验证如何与 api 密钥一起工作,以及如何使用 Django 拥有的内置用户模型对用户进行身份验证。任何建议或代码都非常感谢。谢谢。
2 回答
只是为了回答您有关身份验证的问题:
Django 中的身份验证如何工作?
需要 Django 身份验证才能SessionMiddleware
工作。加载会话后,Django 身份验证后端会读取一个特殊的 cookie _auth_user
(IIRC),其中包含当前登录的用户 ID。如果您可以访问 django shell,您可以操作它并让自己以任何用户身份登录!一旦后端注意到有一个_auth_user
键,它就会向请求中添加一个惰性用户对象(因此它会延迟它User.objects.get(...)
直到真正需要它)。如果会话字典中没有这样的键,则声称用户是匿名的,而是将 的实例AnonymousUser
添加到请求对象中。
Tastypie 中的身份验证如何工作?
在执行资源视图之前,会调用一个方法,Resource.is_authenticated(request)
该方法又会调用您选择的后端的is_authenticated(request)
方法。如果该方法返回,则声称身份验证失败并返回错误。如果方法返回 a ,则返回响应。如果该方法返回,则声称该请求已通过身份验证。authentication
Resource
False
Unauthorized
HttpResponse
True
用户模型认证如何在 Tastypie 中工作?
用户模型认证可以使用SessionAuthentication
Tastypie 本身提供的后端来执行。它所做的是为当前请求创建一个会话,以便身份验证中间件可以自动将相关的用户模型插入到请求中。请注意,要使此方法起作用,您的 API 客户端必须支持存储 cookie 并在以后的请求中重新发送它们。
您可能会发现这很有用。它允许您根据 Django 会话 cookie 对用户进行身份验证。
https://github.com/amezcua/TastyPie-DjangoCookie-Auth/blob/master/DjangoCookieAuth.py
我在我的应用程序中使用它并且它有效!