Django Restful(DRF)框架学习(三)JWT认证
REST framework JWT 是django的一个插件
- 安装依赖包:
pip install djangorestframework-jwt
。 - 配置
settings.py
:
- 有两种可供选择的模式,一是只读模式,二是用户模式。
- 只读模式模式下:所有api都可以被访问,但是未登陆用户只能查看。例如新闻网站中人人都可以看新闻,但是要发表评论需要登录。
- 用户模式下:所有api的访问都必须经过认证后才能操作,例如教务系统。
- 在settings.py中进行设置
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
# 设置访问权限为只读
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
# 设置访问权限为必须是用户
# 'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.BasicAuthentication',
#可以用session保持会话 'rest_framework.authentication.SessionAuthentication',
),
}
- 配置路由地址:
- 在总路由
urls.py
下导入包from rest_framework_jwt.views import obtain_jwt_token,verify_jwt_token
- 然后添加代码
urlpatterns+=[
url('auth/',obtain_jwt_token),
url('auth/',include('rest_framework.urls',
namespace='rest_framework')),
]
-
进行测试发现允许的请求方式已经没有put、delete和post的按钮了
-
但是get请求正常访问
-
通过
http://127.0.0.1:8000/auth/
log in 之后拿到token
>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InR5c29uIiwidXNlcl9pZCI6MSwiZW1haWwiOiJjaGluYW1lbjUyMEBxcS5jb20iLCJleHAiOjE1NDk1NDAzODV9.BYhY37b7Pyb2O3Gtsnb86Nb4nz79DglBNu6l_5-teHs -
使用受到保护的方法时,需要在请求头上带上token,具体的格式是:
Authorization JWT yourtoken
。 -
这种认证是basic auth的一种