Restframework 认证authentication 组件实例-1
1. 创建用户表和 token表
class User(models.Model):
user =models.CharField(max_length=)
pwd =models.CharField(max_length=)
type=((,"VIP"),(,"SVIP"),(,"SSVIP"))
user_type = models.IntegerField(choices=type) class UserToken(models.Model):
user= models.OneToOneField("User")
token =models.CharField(max_length=)
2.创建登录类
from app01.models import User,UserToken class LoginView(APIView):
"""
1000:成功
1001: 用户名和密码错误
1002:异常错误
"""
def post(self,request):
response = {"code": 100, "msg": None, "user": None}
try:
print(request.data)
user= request.data.get("user")
pwd =request.data.get("pwd") user =User.objects.filter(user=user,pwd=pwd).first() import uuid
random_str =uuid.uuid4() if user:
response["user"] =user.user
UserToken.objects.update_or_create(user =user,defaults={"token":random_str})
response["user"] =user.user
response["token"] =random_str
else:
response["code"]=1001
response["msg"]="密码错误" except Exception as e:
response["code"] =1002
response["msg"] =str(e) return Response(response)
3.设置认证类逻辑.
from app01.models import UserToken
from rest_framework.exceptions import AuthenticationFailed from rest_framework.authentication import BaseAuthentication class UserAuth(BaseAuthentication): msg = "认证失败"
def authenticate(self, request):
token = request.query_params.get("token")
usertoken= UserToken.objects.filter(token =token).first() if usertoken:
return usertoken.user, usertoken.token
else:
raise AuthenticationFailed("认证失败!")
4.1 应用局部认证
class BookView(APIView):
authentication_classes = [UserAuth]
def get(self,request):
"""
查看所有书籍
:param request:
:return:
"""
book_list=Book.objects.all()
serializer= BookSerializer(book_list,many=True)
return Response(serializer.data) def post(self,request):
"""
添加一条书籍
:param request:
:return:
"""
serializer=BookSerializer(data=request.data,many=True)
if serializer.is_valid():
serializer.save()#create操作.
return Response(serializer.data)
else:
return Response(serializer.errors)
4.2 设置全局认证模式
REST_FRAMEWORK={
'DEFAULT_AUTHENTICATION_CLASSES': (
'app01.utils.auth_class.UserAuth',
),
}
验证.

Restframework 认证authentication 组件实例-1的更多相关文章
- Restframework 权限permission 组件实例-2
1.在视图类里添加权限组件 class BookView(APIView): authentication_classes = [UserAuth] permission_classes = [SVI ...
- Restframework 分页器 Pagnation 组件实例-5
分页逻辑 from rest_framework.pagination import PageNumberPagination class BookView(APIView): # authentic ...
- Restframework 频率throttle组件实例-3
频率逻辑: from rest_framework.throttling import BaseThrottle import time VISIT_RECORD={} class VisitThro ...
- [转].net中的认证(authentication)与授权(authorization)
本文转自:http://www.cnblogs.com/yjmyzz/archive/2010/08/29/1812038.html 注:这篇文章主要给新手看的,老手们可能会觉得没啥营养,就请绕过吧. ...
- .net中的认证(authentication)与授权(authorization)
“认证”与“授权”是几乎所有系统中都会涉及的概念,通俗点讲: 1.认证(authentication) 就是 "判断用户有没有登录?",好比windows系统,没登录就无法使用(不 ...
- jQuery.uploadify文件上传组件实例讲解
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- drf06 认证Authentication 权限Permissions 限流Throttling
为了方便接下来的学习,我们创建一个新的子应用 four python manage.py startapp four 因为接下来的功能中需要使用到登陆功能,所以我们使用django内置admin站点并 ...
- django-rest-framework框架 第四篇 认证Authentication
认证Authentication 什么是身份认证 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或与其签名的令牌)关联的机制. 视图的最开始处运行身份验证 在权限和限制检查发生之前,以及在允许 ...
- RestFramework之权限组件
一.权限组件的使用 1.首先需要导入包 from rest_framework.permissions import BasePermission 2.编写权限类 class VipPermissio ...
随机推荐
- php 中的信号处理
首先我们需要了解几个函数 pcntl_signal 安装信号处理器,也就是当指定信号发生时,调用函数. pcntl_alarm 指定秒数后向进程发送SIGALRM信号. posix_getpi ...
- win下php的memcached的安装与使用
1.memcache的php扩展与memcached服务器的区别? php要操作memcached就必须要安装memcache的扩展, 在http://windows.php.net/download ...
- phpstorm2018.3的安装和激活和汉化
安装 第一步:解压并打开文件,运行安装程序,点击Next进入下一步, 第二步:选择软件安装目录,自定义选择安装根目录--> 注意!后面还需要找安装目录里的文件,所以记住安装到一个比较容易查看的目 ...
- geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql
package com.geoserver; import java.io.IOException; import java.util.ArrayList; import java.util.Hash ...
- DNA甲基化检测服务
DNA甲基化检测服务 DNA甲基化是最早发现的基因表观修饰方式之一,真核生物中的甲基化仅发生于胞嘧啶,即在DNA甲基化转移酶(DNMTs)的作用下使CpG二核苷酸5'-端的胞嘧啶转变为5'-甲基胞嘧啶 ...
- CString 作为参数执行都不执行
static int LoadUsbSDK(CString curpath ) win10系统下 CString 函数加载dll直接跳过 加载dll最好不要带参数
- conn not captured
线程 和 事件中 变量 not captured 把变量定义为 static 或者添加为全局变量(放在main之前)
- How to Install and Configure Bind 9 (DNS Server) on Ubuntu / Debian System
by Pradeep Kumar · Published November 19, 2017 · Updated November 19, 2017 DNS or Domain Name System ...
- [SoapUI] 通过正则表达式从xml格式的response中提取ID
import com.eviware.soapui.support.GroovyUtils import java.util.regex.* //Get response def groovyUtil ...
- 不能错过的Sketch实用新技巧和资源集锦
Sketch是一款基于Mac的矢量绘图应用.面对着功能复杂繁琐的photoshop,Sketch相比较而言身轻如燕.最近也掀起了用Sketch设计产品原型的热潮,因为用它来画设计稿简直轻而易举,相比于 ...