1005.Django项目用户功能之认证权限以及班级管理

发布时间 2023-05-25 20:55:27作者: 興華

一、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. 路由

创建路由器,注册路由,拼接路由器。

三、权限

四、SerializerMethodField