上面我们都是基于auth_user表去做签发认证的 但是我们日常基本程序都是用自己定义的表来做认证的 所以我们该怎么做呢?
创建User表模型
class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
写一个登录接口
from rest_framework.exceptions import APIException
from rest_framework_jwt.settings import api_settings
from .models import UserInfo
jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
class UserView(APIView):
def post(self, request):
try:
username = request.data.get('username')
password = request.data.get('password')
user = UserInfo.objects.get(username=username, password=password)
payload = jwt_payload_handler(user)
token = jwt_encode_handler(payload)
return Response({'code': 100, 'msg': '登录成功', 'token': token})
except Exception as e:
raise APIException('用户名或密码错误')
urlpatterns = [
path('authlogin/', views.UserView.as_view()),
技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点点赞收藏+关注
谢谢支持 !!!
在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP是无状态的协议,当我们通过帐号密码验证一个用户时,下一个request请求时就把刚刚的用户忘了。于是我们就无法确认该用户的情况,就要再验证一次。所以为了保证系统安全,我们就需要验证用户否处于登录状态。
前后端分离通过Restful API进行数据交互时,如何验证用户的登录信息及权限。在原来的项目中,使用的是最传统也是最简单的...
目前绝大多数的系统都少不了登录验证的功能,这主要是为了保存用户的状态,以此来限制用户的各种行为,从而方便有效的控制用户的权限。比如一个用户登录微博、发布、关注、评论等操作都应是在登录后的用户状态下进行的。实现验证登录的功能主要有两种方式,这一节我们将先对的工作原理做详细的介绍。
1.在users模块创建utils.py,通过这个方法验证是否为正确的用户
from django.contrib.auth.backends import ModelBackend
import re
from . import models
class UserPhoneEmail(ModelBackend):
当前的类是用来定义自定义的认证方法
目录一:web开发模式1.1 前后端不分离1.2 前后端分离二:API接口三:接口测试工具:Postman四:RESTful API规范restful十条规范1 数据的安全保障2 接口特征表现3 多数据版本共存4 (重点)数据即是资源,均使用名词(可复数)5 (重点)资源操作由请求方式决定(method)过滤,通过在url上传参的形式传递搜索条件7 响应状态码7.1 正常响应7.2 重定向响应7.3 客户端异常7.4 服务器异常8 错误处理,应返回错误信息,error当做key9 返回结果,针对不同操作,服
Django REST framework是基于Django的一套扩展,可以快速方便写出RESTful API。DRF给我提供了 序列化、请求和响应、@apiview装饰器、类视图、认证和权限、jwt(扩展)认证、版本、分页、控制频率、解析器、视图集、路由器、文档(扩展)等等功能,建议有Django基础的人学习。
如果我们使用drf框架状态保持使用的是session的话,而不是jwt,那么我们的后台肯定要保存数据,用于对比验证,这样保存到那里就成了问题,
保存到mysql中,这是框架默认的存储地址,在setting中可以不用设置,但是这种当用户少的时候是没问题的,但是用户量很大的时候,服务器开销就会很大,影响性能
保存到缓存中redis中,这样的话查询速度就会很快,但是我们都知道redis数据一旦存储满的话,就会实行删除策略,这样会丢失一部分数据,导致用户状态无法保持,所以最好的办法就是 数据库-缓存 并用,两者.
cookie,session,token,jwt原理介绍,base64编码与解码,drf修改返回格式,自定义user表,签发token
12.6 http.cookies: HTTP cookie
http.cookies模块为大多数符合RFC 2109的cookie实现一个解析器。这个实现没有标准那么严格,因为MSIE 3.0x不支持完整的标准。
12.6.1 创建和设置cookie
可以用cookie为基于浏览器的应用实现状态管理,因此,cookie通常由服务器设置,并由客户存储和返回。下面给出一个最简单的例子,创建一个coo...