• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

drf—— JWT认证及基本使用

互联网 diligentman 2周前 (11-20) 10次浏览

一、JWT认证介绍

1 不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制,用户登录认证2 用户只要登录了,返回用户一个token串(随机字符串),每次用户发请求,需要携带这个串过来,验证通过,我们认为用户登录了3 JWT的构成(字符串) -三部分(每一部分中间通过.分割):header payload signature -header:声明类型,这里是jwt,声明加密算法,头里加入公司信息...,用base64转码  {   'typ': 'JWT',   'alg': 'HS256' #用md5也行  } -payload:荷载(有用),当前用户的信息(用户名,id,这个token的过期时间,手机号),用base64转码  {   "sub": "1234567898",   "name": "egon",   "admin": true,   "userid":1,   'mobile':123444444  } -signature:签名  -把前面两部分的内容通过加密算法+密钥加密后得到的一个字符串     -jwt总的构成样子:  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ  4 JWT认证原理 -用户携带用户名,密码登录我的系统,校验通过,生成一个token(三部分),返回给用户---》登录功能完成 -访问需要登录的接口(用户中心),必须携带token过来,后端拿到token后,把header和payload截出来,再通过一样的加密方式和密码得到一个signature,
    和该token的signature比较,如果一样,表示是正常的token,就可以继续往后访问


二、jwt基本使用(使用内置jwt)

安装

1 drf中使用jwt,借助第三方https://github.com/jpadilla/django-rest-framework-jwt2 安装 pip3 install djangorestframework-jwt

快速使用

3 快速使用(默认使用auth的user表) (1) 在默认auth的user表中创建一个用户 (2) 在路由中配置 from rest_framework_jwt.views import obtain_jwt_token  path('login/', obtain_jwt_token), (3) 用postman向这个地址发送post请求,携带用户名,密码,登陆成功就会返回token  (4)obtain_jwt_token本质也是一个视图类,继承了APIView  -通过前端传入的用户名密码,校验用户,如果校验通过,生成token,返回  -如果校验失败,返回错误信息 访问地址:http://127.0.0.1:8000/homework/login/

用户登录以后才能访问某个接口

4 用户登录以后才能访问某个接口 -jwt模块内置了认证类,拿过来局部配置就可以 -class OrderView(APIView):  # 只配它不行,不管是否登录,都能范围,需要搭配一个内置权限类  authentication_classes = [JSONWebTokenAuthentication, ]  permission_classes = [IsAuthenticated,]  def get(self, request):   print(request.user.username)   return Response('订单的数据') 访问地址: http://127.0.0.1:8000/homework/order/ 注意:访问的时候需要在header内携带jwt

用户未登录,可以访问

5 用户未登录,可以访问 -class OrderView(APIView):  # 只配它不行,不管是否登录,都能范围,需要搭配一个内置权限类  authentication_classes = [JSONWebTokenAuthentication, ]  def get(se.........

喜欢 (0)