django使用jwt进行身份验证

Lan
Lan
2021-05-22 / 0 评论 / 297 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年05月22日,已超过1062天没有更新,若内容或图片失效,请留言反馈。

前言

使用django-rest-framework开发api并使用json web token进行身份验证
在这里使用django-rest-framework-jwt这个库来帮助我们简单的使用jwt进行身份验证
并解决一些前后端分离而产生的跨域问题

安装django-rest-framework

在终端输入以下命令安装

pip install djangorestframework
pip install djangorestframework-jwt
在settings.py的INSTALLED_APPS中加入:

INSTALLED_APPS = [
    ...
    'rest_framework',
    'rest_framework.authtoken',  # 设置token
    ...
]
安装django-cors-headers

解决api跨域请求有好几种方法,比如(jsonp,在apache或nginx中设置,在请求头里设置),我们这里使用这个包来方便的跨域

pip install django-cors-headers
配置settings.py文件

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
 ] 
MIDDLEWARE = [
    'corsheaders.middleware.CorsMiddleware',
    ...
]
后端配置

设置过期时间
还有很多配置需要自己看文档

import datetime
JWT_AUTH = {
    'JWT_EXPIRATION_DELTA': datetime.timedelta(days=7),
    'JWT_AUTH_HEADER_PREFIX': 'JWT',}
修改使用jwt验证的URL

from rest_framework_jwt.views import obtain_jwt_token
url(r'^login/', obtain_jwt_token),

测试

1.Postman里携带用户名密码登陆

可以看到jwt为我们返回的token

2.Views里设置token验证

购物车需要token认证才能查看

class ShoppingCartViewset(viewsets.ModelViewSet):
    """
    购物车功能
    list:
        获取购物车详情
    create:
        加入购物车
    delete:
        删除购物记录
    """
    permission_classes = (IsAuthenticated, IsOwnerOrReadOnly)
    # 标记需要进行jwt验证
    authentication_classes = (JSONWebTokenAuthentication, SessionAuthentication) 
    serializer_class = ShopCartSerializer
    lookup_field = "goods_id"
3.使用Postman携带token访问购物车



作者:人生苦短啊
链接:https://www.jianshu.com/p/740a0320f960
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


0

评论 (0)

取消