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