Skip to main content

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

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生成的方法

  1. 拼接字符串,首先去除sign参数本身,然后去除值是空的参数p3,剩下p2=v2&p1=v1&method=cancel&pn=vn, 然后按参数名字符升序排序,method=cancel&p1=v1&p2=v2&pn=vn.
  2. 然后做参数名和值的拼接,最后得到methodcancelp1v1p2v2pnvn
  3. 在上面拼接得到的字符串后加上验证密钥key,我们假设是abc,得到新的字符串methodcancelp1v1p2v2pnvnabc
  4. 然后将这个字符串换为小写进行md5计算,假设得到的是abcdef,这个值即为sign签名值。

参考

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-request-sign-1.0.2.tar.gz (4.1 kB view hashes)

Uploaded Source

Built Distribution

django_request_sign-1.0.2-py3-none-any.whl (5.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page