前言
使用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)