Django生成token的第三方封装

#!/usr/bin/env python
# -*- coding:utf-8 -*-
'''
@FileName  :utils.py 
@desc      : 邮箱验证
@Author    :Young
@IDE       :PyCharm
@Time      :2021/2/21 0021 9:44
'''
#一是产生token发送邮件,
#二是处理验证连接,采用base64进行加密,采用itsdangrous进行序列化

from itsdangerous import URLSafeTimedSerializer as utsr   #URLSafeTimedSerializer将其他类型转化为字符串
import base64
from django.conf import settings as django_settings

class Token:  #自定义模块
    def __init__(self, security_key):
        self.security_key = security_key
        self.salt = base64.encodebytes(security_key.encode('utf8'))   #将非ASCILL码字符转化为ASCILL码字符,salt是用来做加密的随机字符串

    def generate_validate_token(self, username):  #生成一个Token
         serializer = utsr(self.security_key)  #以security_key为基准产生一个序列化对象  (加密)
         return serializer.dumps(username, self.salt) #dumps产生一个字符串

    def confirm_validate_token(self, token, expiration=3600):  #验证  (解密)
        serializer = utsr(self.security_key)
        return serializer.loads(token, salt=self.salt,max_age=expiration)  #max_age是过期时间,loads是做序列化的

    def remove_validate_token(self, token):  #过期之后将token移除
         serializer = utsr(self.security_key)
         print(serializer.loads(token, salt=self.salt))
         return serializer.loads(token, salt=self.salt)

token_confirm = Token(django_settings.SECRET_KEY) # 定义为全局变量

### 关于 Python 操作钉钉的第三方模块 对于 Python 开发者来说,操作钉钉的功能可以通过多种方式实现。以下是关于 Python 钉钉第三方模块的相关说明: #### 官方支持与兼容性 钉钉开放平台提供了官方的 SDK 支持,其中包括针对不同编程语言的支持工具包。虽然官方文档主要展示了 Java 和 PHP 的 SDK[^3],但社区开发者已经基于钉钉 API 创建了一些适用于 Python第三方库。 #### 常见的 Python 钉钉第三方模块 1. **dingtalk-sdk**: 这是一个由社区维护的 Python 版本钉钉 SDK,旨在简化与钉钉服务器之间的交互过程。该模块支持多个版本的 Python 环境(如 2.7, 3.4, 3.5, 3.6 和 PyPy),并提供了一系列接口来处理常见的业务需求,例如消息推送、用户管理以及扫码登录等功能[^2]。 2. **其他自定义封装库**: 如果 `dingtalk-sdk` 不完全满足项目需求,则可以考虑使用更灵活的方式构建自己的适配层。比如通过 Django 实现钉钉扫码登录功能时,通常需要结合框架特性设计特定的数据结构和逻辑流程[^4]。此时可能涉及手动解析 OAuth 授权码或者调用 RESTful API 来完成身份验证等工作。 #### 使用案例分析 - 发送通知至指定群聊:利用 Webhook 地址配合 HMAC-SHA256 加密算法生成动态签名后提交 POST 请求即可达成目标[^1]。 - 处理用户认证环节:当访问受保护资源页面触发跳转动作之后,服务端能够捕获来自客户端传递过来的临时授权凭证 (即 code),进而换取正式 token 并获取关联账户资料[^5]。 ```python from dingtalk_sdk import DingTalkClient client = DingTalkClient(app_key="your_appkey", app_secret="your_appsecret") # 获取企业内部成员信息示例 user_info = client.get_user_by_code(code="example_code") print(user_info) ``` 以上代码片段展示如何借助上述提到的一个具体实例化对象去请求某个员工详情记录的方法之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值