django request signature
Project description
django-request-sign
对django请求进行签名效验
安装
pip install django-request-sign
使用
将 request_sign.middleware.RequestSignMiddleware
放置到中间件第一位
# django settings
MIDDLEWARE = [
'request_sign.middleware.RequestSignMiddleware',
...
...
]
前端支持与示例
需要在header头中增加的参数,这里以axios作为参考,前端签名参考示例js文件
实际使用前请不要忘了删除示例文件中输出的日志信息
参数 | 说明 |
---|---|
timestamp | 请求时间戳 |
nonce | 请求ID(随机生成) |
sign | 本次请求签名 |
配置参数
配置参数 | 说明 | 类型 | 默认值 | 示例 |
---|---|---|---|---|
ENABLE_REQUEST_SIGNATURE | 是否开启 | Boolean | False |
True /False |
SIGNATURE_SECRET | 签名秘钥 | Str | None |
e6QGz7AhFzFAFsR9jYoCUnZGsqDrQI |
SIGNATURE_ALLOW_TIME_ERROR | 允许请求时间前后误差 | Int | 600 |
600 |
SIGNATURE_RESPONSE | 签名不通过返回方法 | Str | request_sign.utils.default_response |
you_project.you_app.file.function |
SIGNATURE_PASS_LIST | List | [] | 1. 在urls.py中配置name属性 re_path('content/download', views.DownloadContent.as_view(), name='DownloadContent') ,配置中填写name值即可(推荐) 2.直接写url(不推荐) |
['DownloadContent'] or ['/api/v1/mcn/content/download'] |
request_sign.utils.default_response
方法默认返回http状态码为200的空信息,你可以自行实现一个返回函数,更改 SIGNATURE_RESPONSE
配置
即可,但请一定注意,自行实现的函数一定要返回一个django的HttpResponse
对象,否则django会异常。
# request_sign.utils.default_response
def default_response():
"""
Must return django HttpResponse type
:return: HttpResponse
"""
return HttpResponse()
签名参数sign生成的方法
- 拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1&method=cancel&pn=vn, 然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.
- 然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn
- 在上面拼接得到的字符串后加上验证密钥key,我们假设是abc,得到新的字符串methodcancelp1v1p2v2pnvnabc
- 然后将这个字符串换为小写进行md5计算,假设得到的是abcdef,这个值即为sign签名值。
参考
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for django-request-sign-1.0.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb57274c6ac796b7d28dd2dd69eecfb58946d35ed8f169f83d20d6217ae3e59f |
|
MD5 | 4282b2529d903383486882ad24fa9cfe |
|
BLAKE2b-256 | 03a078b5c29f5b9f9aec64165a92fdf46f1a8215bcd3e8dfd1503b7946cbbd5d |
Close
Hashes for django_request_sign-1.0.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a0eeebab25b59fc90e11168f3e645e00863f82f87cfff2b5f7e6e11c238177e |
|
MD5 | b5a1bd42297ccde64a81f8ce8991fa34 |
|
BLAKE2b-256 | 505fc8fdda71dfbd7dce0e73f86fdedfcc99df5c6a67d561918a274ba7223f23 |