首页 > 其他分享 >1005.Django项目用户功能之认证权限以及班级管理

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

时间:2023-05-25 20:55:35浏览次数:49  
标签:班级 False 模型 py rest Django framework 1005 app

一、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

标签:班级,False,模型,py,rest,Django,framework,1005,app
From: https://www.cnblogs.com/lxinghua/p/17431297.html

相关文章

  • FLASK项目目录(模仿django)
    FLASK项目目录(模仿django)1.app放static和templates文件夹,以及应用的文件夹,图中admin文件夹可以简单看成一个应用|____admin应用,功能模块|____static静态文件存放位置|____templates模板文件存放位置|______init__.pyutils工具文件存放位置app.py项目启......
  • What is doing __str__ function in Django?
    def str(self):isapythonmethodwhichiscalledwhenweuseprint/strtoconvertobjectintoastring.Itispredefined,howevercanbecustomised.Willseestepbystep.Supposebelowisourcode.classtopics():def__init__(self,topics):......
  • Django——中间件
    我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面。我们通过给几个特定视图函数加装饰器实现了这个需求。但是以后添加的视图函数可能也需要加上装饰器,这样是不是稍微有点繁琐。学完今天的内容之后呢,我们就可以用更适宜的......
  • django 使用mysql数据库
    1.手动创建mysql数据库,比如xadmincreatedatabasexadmincharset=utf8;2.配置django项目setting.py文件中的数据库设置DATABASES={'default':{'ENGINE':'django.db.backends.mysql',#数据库后端'NAME':'xadmin',......
  • 1004.Django项目用户功能之关联序列化及访问限流
    一、路由器1.SimpleRouter该路由器包括标准集合——list、create、retrieve、update、partial_update、destroy动作的路由。视图集中还可以使用@detail_route或@list_route装饰器标记要被路由的其他方法;2.DefaultRouter这个路由器类似于上面的SimpleRouter,但是还包括一个默......
  • django之对FileField字段的upload_to的设定
       用django开发,经常要处理用户上传的文件,比如user模型里面如果又个人头像的字段ImageField等等,而django在FielField字段(包括ImageField)的支持和扩展是做的很好的,首先一个问题,是上传的文件,django是放到哪里去了,(note:文件流是不会放到数据库里面的,该字段在数据库中只存储路......
  • error: RPC failed; curl 55 OpenSSL SSL_write: Connection was aborted, errno 1005
    git初始化上传本地代码到远程出现异常造成的可能原因:1.网络原因2.无效的代理3.一次性推送的代码量过大 解决方法:1.网络原因可以等一段时间网络良好的情况上传2.无效代理的情况如下设置gitconfighttp.sslVerify"false"3.一次性推送代码量过大的情况如下设置,更改推......
  • django使用mysql数据库
    1、启动/停止mysqlnetstartmysql80netstopmysql802、登录mysqlmysql-uroot-ppassword3、创建数据库/databasecreatdatabaseday10DEFAULTCHARSETutf8COLLATEutf8_general_ci;4、pycharm设置使用mysql,在settings中添加如下代码1DATABASES={2......
  • django配置文件作用,drf 登录功能,drf认证组件,drf权限组件,drf频率组件
    django配置文件作用:    drf登录功能:view内:from.modelsimportUserInfo,UserTokenfromrest_framework.viewsetsimportViewSetimportuuidfromrest_framework.responseimportResponsefromrest_framework.decoratorsimportactionclassUser......
  • git指令连接库失败:OpenSSL SSL_read: Connection was reset, errno 10054
    一、问题描述无论是gitclone还是gitpush之类的需要连接库的指令都会出现`fatal:unabletoaccess'http://github.com/我的库/':OpenSSLSSL_read:Connectionwasreset,errno10054`报错原因:字面意思:服务器的SSL证书灭有经过第三方机构的签署。网上信息也有的说可能......