使用基于令牌的身份验证向django应用程序添加api。
django-tokenapi的Python项目详细描述
django tokenapi
==
这是一个django应用程序,允许您创建使用基于令牌的身份验证的简单api
。通过添加一个修饰符,您可以很容易地打开api的现有视图。
为了向公众开放一个api,最好使用一个支持oauth的框架,其中有一些非常好的实现(https://bitbucket.org/jespern/django-piston/wiki/home)。
r/>安装
----
m a
常规安装或使用[pip][]:
确保"django.contrib.auth.backends.modelbackend"位于"身份验证后端"中。
将"tokenapi.backends.tokenbackend"添加到"身份验证后端"中。
它看起来像这样:
urlpatterns=[
url(r'^token/',include('tokenapi.urls'),
]
configuration
----
默认为"7"。
用法
----
ername=jpulgarin&;password=gggggg"http://www.yourdomain.com/token/new.json
[curl]:http://curl.haxx.se/
>如果请求成功,您将收到类似这样的json响应:
{"success":true,"token":"2uy-420a8eff7f882afc2d","user":1}
ername和password对将产生如下响应:
{"success":false,"errors":"无法登录,请重试"}
请注意,如果您的用户模型具有"is\u active"标志,则身份验证逻辑将不允许非活动用户获取或使用令牌。
将存储访问api的客户端返回的"user"和"token",因为所有后续调用都要求请求具有有效的token和用户对。
到"api_token"视图,并将令牌和用户作为url的一部分发送。
使用curl它看起来像:
###编写与api兼容的视图
若要允许通过基于令牌的身份验证访问视图,请使用
`tokenapi.decorators.token_required`decorator。还有
json帮助函数,使处理json更容易。
这是一个api兼容视图的示例:
from tokenapi.decorators import token_required
from tokenapi.http import jsonresponse,jsonerror,jsonresponsebadrequest,jsonresponseunauthorized,jsonresponseforbidden,jsonresponsenotfound,jsonresponsenotallowed,jsonresponsenotacceptable
@需要令牌
定义索引(请求):
如果request.method='post':
data={
'test1':49,
'test2':'awesome',
}
返回jsonresponse(data)
否则:
返回jsonerror("只允许post")
####请求参数
客户端可以通过向其发送请求来访问任何与api兼容的视图,
,并将"user"和"token"作为请求参数(get或post)。
使用curl访问上面的示例视图可能看起来像:
curl-d"user=1&;token=2uy-420a8efff7f882afc2d"http://www.yourdomain.com/new.json
您将收到以下响应:
{"success":true,"test1":49,"test2":"awesome"}
\n在
根据
[基本访问身份验证](http://en.wikipedia.org/wiki/basic_access_authentication)方案的授权头中
。构造授权头:
1。将用户id和令牌组合成字符串"user:token"
2。使用base64对结果字符串进行编码。在生成的base64编码字符串前面加上"basic"(包括尾随空格)
如果在同一请求中,通过请求参数和
授权头提供凭据,则请求参数将用于身份验证。
--——
令牌生成代码来自"django.contrib.auth.token s",但经过修改后
不会在用户最后一次登录时散列。
==
这是一个django应用程序,允许您创建使用基于令牌的身份验证的简单api
。通过添加一个修饰符,您可以很容易地打开api的现有视图。
为了向公众开放一个api,最好使用一个支持oauth的框架,其中有一些非常好的实现(https://bitbucket.org/jespern/django-piston/wiki/home)。
r/>安装
----
m a
常规安装或使用[pip][]:
确保"django.contrib.auth.backends.modelbackend"位于"身份验证后端"中。
将"tokenapi.backends.tokenbackend"添加到"身份验证后端"中。
它看起来像这样:
urlpatterns=[
url(r'^token/',include('tokenapi.urls'),
]
configuration
----
默认为"7"。
用法
----
ername=jpulgarin&;password=gggggg"http://www.yourdomain.com/token/new.json
[curl]:http://curl.haxx.se/
>如果请求成功,您将收到类似这样的json响应:
{"success":true,"token":"2uy-420a8eff7f882afc2d","user":1}
ername和password对将产生如下响应:
{"success":false,"errors":"无法登录,请重试"}
请注意,如果您的用户模型具有"is\u active"标志,则身份验证逻辑将不允许非活动用户获取或使用令牌。
将存储访问api的客户端返回的"user"和"token",因为所有后续调用都要求请求具有有效的token和用户对。
到"api_token"视图,并将令牌和用户作为url的一部分发送。
使用curl它看起来像:
###编写与api兼容的视图
若要允许通过基于令牌的身份验证访问视图,请使用
`tokenapi.decorators.token_required`decorator。还有
json帮助函数,使处理json更容易。
这是一个api兼容视图的示例:
from tokenapi.decorators import token_required
from tokenapi.http import jsonresponse,jsonerror,jsonresponsebadrequest,jsonresponseunauthorized,jsonresponseforbidden,jsonresponsenotfound,jsonresponsenotallowed,jsonresponsenotacceptable
@需要令牌
定义索引(请求):
如果request.method='post':
data={
'test1':49,
'test2':'awesome',
}
返回jsonresponse(data)
否则:
返回jsonerror("只允许post")
####请求参数
客户端可以通过向其发送请求来访问任何与api兼容的视图,
,并将"user"和"token"作为请求参数(get或post)。
使用curl访问上面的示例视图可能看起来像:
curl-d"user=1&;token=2uy-420a8efff7f882afc2d"http://www.yourdomain.com/new.json
您将收到以下响应:
{"success":true,"test1":49,"test2":"awesome"}
\n在
根据
[基本访问身份验证](http://en.wikipedia.org/wiki/basic_access_authentication)方案的授权头中
。构造授权头:
1。将用户id和令牌组合成字符串"user:token"
2。使用base64对结果字符串进行编码。在生成的base64编码字符串前面加上"basic"(包括尾随空格)
如果在同一请求中,通过请求参数和
授权头提供凭据,则请求参数将用于身份验证。
--——
令牌生成代码来自"django.contrib.auth.token s",但经过修改后
不会在用户最后一次登录时散列。