一、Token
1. Token概述
在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请,登录系统使用Token、令牌、代表执行某些操作的权利的对象。更通俗点可以叫暗号,在一些数据传输之前,要先对暗号的核对,不同的暗号被授权不同的数据操作。
方法:①引入--客户端请求数据,服务端频繁的去数据库匹配用户是否正确,重复资源消耗;②定义--服务端生成的一串字符串,以作客户端进行请求的一个令牌;③目的:减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
基于JWT的Token认证:
①header--头部数据包含使用的加密算法;②playload--Token要包含的数据,内容可以自定义,也可以参考标准字段,lss、sub、exp、iat;③ signature--签名,将header和playload使用base64编码生成再加入签名字符使用,加密算法加密得到唯一的签名,防止其他人来篡改token中的信息。
2. 登录与认证流程
①请求:用户发起请求,传入用户名和密码;
②验证:服务器静心更严重用户的信息;
③通过验证返回token令牌,客户端存储token,不通过返回错误信息提示登录失败;
④认证:每次请求都携带token服务器验证token,正确才返回数据。
3. Django-rest-framework-jwt
参考:https://jpadilla.github.io/django-rest-framework-jwt/
① 安装django-rest-framework-jwt 虚拟环境中 pip install djangorestframework-jwt -i https://pypi.douban.com/simple
② settings.py文件中导入以下代码
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ), }
新建app users,并进行app添加,以及需要配置app urls路由以及项目urls等信息。
开启程序前端访问:
暂时无users用户,怎么创建users? 因占时未编写注册功能,所以需要创建users可以采用以下方式:
Tools>RUN manage.py Task.. 进入界面后 输入createsupperuser 即可开始创建user,此方法创建的user为超级管理员用户。
(密码随意!)
然后访问admin,进入登录界面,输入账号密码即可进入。
进入后即可进行用户创建以及权限设置!
可进行user的添加分组
再次访问用户登录界面,进行用户登录后即可看到对应的token加密令牌!
二、班级管理
1. 模型
首先在models.py中存在大量的模型类需要建立,每个模型都有数据项目需要建立,其中如create_time、update_time、is_delete等都是相同的项目,如何整合了?可以在项目目录下新建utils文件,创建modelsMixin.py文件进行App的models.py文件中模型类相同的项目进行整合处理。
完成以上模型类相同项目整合后,在app的models.py文件可直接打入整合模型,以供app models.py建立模型类后可进行继承!若出现不需要的项目则可选择需要的模型类进行继承
app school中models.py文件建立班级模型类,继承整合模型类即可实现共同项目的创建更新等
字段名 | 类型 | 长度 | NULL | 备注 |
Name | Char | 30 | False | 班级名 |
Slogan | Text | True | 口号 | |
create_time | Datetime | False | 创建时间 | |
update_time | Datetime | False | 更新时间 | |
is_delete | Boolean | False | 逻辑删除,默认为False | |
Member | ManyToMany | False | 班级成员、外键 |
2. 序列化器
完成上述models模型类建立后,进行映射模型类,过滤is_delete字段,并隐藏逻辑删除字段等序列化作业
3. 视图
创建视图,返回数据!
4. 路由
创建路由器,注册路由,拼接路由器。