基于django的授权控制

基于django实现有效期为三年的软件授权控制(用postman进行接口测试)

1.导入必要的包

import base64
import json
import os
import time
import ntplib
from Crypto.Cipher import PKCS1_v1_5, PKCS1_OAEP
from Crypto.PublicKey import RSA

2.设置授权开始和结束时间,生成公钥和私钥,存在指定目录下。

class LicenseAuthView(BaseView):

    def get(self, request):
        key = RSA.generate(1024)
        pub_key = key.publickey().export_key()
        pri_key = key.export_key()
        start_date = '2023-06-13'  
        end_date = '2026-06-13'
        time_str = start_date + ',' + end_date
        cipher_rsa = PKCS1_OAEP.new(RSA.import_key(pub_key))
        encrypted_data = cipher_rsa.encrypt(time_str.encode())
        encrypted_data_base64 = base64.b64encode(encrypted_data).decode()
        with open(os.path.join('data', 'rsa_private.pem'), 'wb') as f:
            f.write(pri_key)

        # 输出加密后的授权内容和私钥
        print('授权内容:', encrypted_data_base64)
        return Response.json_response(Response.ok, Response.msg.get('ok'),
                                      {'license_key': encrypted_data_base64})

3.根据用户输入的lincense_key检查许可证是否有效

def post(self, request):
    response = ntplib.NTPClient().request('ntp.aliyun.com')
    ts = response.tx_time
    _date = time.strftime('%Y-%m-%d', time.localtime(ts))
    print("_data的值是:", _date)
    source_json_str = request.body
    source_dic = json.loads(source_json_str)
    license_key = source_dic.get("license_key")
    pri_key = source_dic.get("pri_key")
    try:
        cipher_rsa = PKCS1_OAEP.new(RSA.import_key(pri_key))
        decrypted_data = cipher_rsa.decrypt(base64.b64decode(license_key))
        decrypted_data_str = decrypted_data.decode()
        start_date, end_date = decrypted_data_str.split(',')
        if start_date <= _date <= end_date:
            context = 'Your license has expired on {}.'.format(end_date)
            return Response.json_response(Response.valid_license_key, Response.msg['valid_license_key'],context)
        else:
            context = 'Your license has expired on {}.'.format(end_date)
            return Response.json_response(Response.license_has_expired, Response.msg['license_has_expired'],
                                          context)
    except Exception as e:
        print('异常', e)
        self.logger.error(e)
        context = 'Your license is invalid'
        return Response.json_response(Response.invalid_license_key, Response.msg['invalid_license_key'], context)

这些response的提示信息都是自定义的,可以根据需要修改。

测试结果:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Django的网盘系统是一个用于存储和共享文件的在线平台。它提供了用户注册和登录功能,允许用户上传、下载和管理他们的文件。 该系统具有以下特点: 1. 用户管理:在系统中,用户可以注册和登录自己的账户。每个用户都有一个唯一的用户名和密码,用于验证身份和保护文件的安全性。 2. 文件上传和下载:注册用户可以将文件上传到他们的个人空间中。用户可以通过简单的拖放或点击上传按钮来上传文件。同时,他们也可以下载自己上传的文件或与他人共享的文件。 3. 文件管理:用户可以根据自己的需求对文件进行管理。他们可以创建文件夹来组织文件,并将文件移动到不同的文件夹中。另外,他们还可以重命名文件和文件夹,以便更好地组织和查找文件。 4. 文件共享:用户可以选择与其他用户共享他们的文件。通过给其他用户提供访问权限,他们可以共享文件夹或单个文件。这样,用户之间可以更方便地协作和共享资源。 5. 文件搜索:为了方便用户查找特定文件,系统提供了文件搜索功能。用户可以输入关键字或文件名来搜索文件。系统会根据用户的搜索条件快速筛选出匹配的文件。 6. 安全保障:系统层面提供了一定的安全保护措施,如用户登录验证、访问权限控制和数据加密等。这些措施可以确保用户的文件和个人信息受到保护,防止未经授权的访问和数据泄漏。 基于Django的网盘系统能够满足用户对文件存储和共享的需求,并提供良好的用户体验和安全保障。无论是个人用户还是企业用户,都可以利用该系统来进行文件管理和协作工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值