当前位置:网站首页 > 更多 > 涨姿势 > 正文

[每日一学] django使用jwt进行身份验证

作者:精品下载站 日期:2021-05-22 00:00:00 浏览:64 分类:涨姿势

前言

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

安装django-rest-framework

在终端输入以下命令安装

pipinstalldjangorestframework
pipinstalldjangorestframework-jwt
在settings.py的INSTALLED_APPS中加入:

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

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

pipinstalldjango-cors-headers
配置settings.py文件

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

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

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

fromrest_framework_jwt.viewsimportobtain_jwt_token
url(r'^login/',obtain_jwt_token),

测试

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

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

2.Views里设置token验证

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

classShoppingCartViewset(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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯