Fork me on GitHub

Python系列之《Django-DRF-JWT用户认证》

一起来学习下前后端分离之JWT用户认证

一、JWT理论

https://www.jianshu.com/p/180a870a308a

二、实践使用

GitHub:https://github.com/GetBlimp/django-rest-framework-jwt
使用文档:http://getblimp.github.io/django-rest-framework-jwt/

1. 安装JWT

使用pip来安装

1
$ pip install djangorestframework-jwt

2. 配置使用

在你的setting.py文件中配置如下:

1
2
3
4
5
6
7
8
REST_FRAMEWORK = {
······
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
······
),
······
}

3. URL配置认证接口

在你的urls.py文件中配置如下:

1
2
3
4
5
6
from rest_framework_jwt.views import obtain_jwt_token

urlpatterns = [
······
url(r'^api-token-auth/', obtain_jwt_token),
]

4. 获取Token

下面两种方式均可

1
2
3
4
$ curl -X POST -d "username=admin&password=password123" http://localhost:8000/api-token-auth/

# 如果是使用Json请求,需要指定请求头部信息
$ curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"password123"}' http://localhost:8000/api-token-auth/

5. 使用Token请求数据

使用方法:

1
curl -H "Authorization: JWT <your_token>" http://localhost:8000/protected-url/

6. 设置Token过期时间

在你的setting.py文件中配置如下:

1
2
3
JWT_AUTH = {
'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=3600),
}

-------------本文结束感谢您的阅读-------------