一、认证
1.Browsable API页面认证与JWT认证比较
-
1.Browsable API页面认证
指定permission_classes
添加rest_framework.urls路由 -
2.Json Web Token认证
-
最常用的认证方式
Session认证
Token认证 -
Session认证
保存在服务端,增加服务器开销
分布式架构中,难以维持Session会话同步
CSRF攻击风险 -
Token认证
保存在客户端
跨语言、跨平台
拓展性强
鉴权性能高 -
JWT
1、由三部分组成
header、playload、signature
2、header:声明类型,声明加密算法,默认为HS256,base64加密,可以解密
3、playload:存放过期时间、签发用户等,可以添加用户的非敏感信息,base64加密,可以解密 -
4、signature
有三部分组成
使用base64加密之后的header+.+使用base64加密之后的playload+.+使用HS256算法加密,同时secret加盐处理
2.Browsable API页面认证
1.源码
‘DEFAULT_AUTHENTICATION_CLASSES’: [
# 会话认证
‘rest_framework.authentication.SessionAuthentication’,
# 基本认证(用户名和密码)
‘rest_framework.authentication.BasicAuthentication’ ]
2.说明
BasicAuthentication:基本的用户密码认证
SessionAuthentication:session会话认证
SessionAuthentication和BasicAuthentication二者缺一不可,相辅相成,也可以在此基础上增加别的认证,如:token认证、微信/QQ第三方认证、LADP认证
在authentication.py模块中,除了上面这两种,还有其它的认证方式可供选择:
3.指定视图下认证,但一般不需要指定视图下进行认证,往往一个项目下只会使用一种认证方式
authenticcation_classes = [] # 列表中添加对应的认证方式
4.创建超级管理员,django自带用户模型,不用自己创建
命令行
python manage.py createsuperuser --username USERNAME --email EMAIL
然后在命令行分别输入密码和确认密码
5.添加路由
这里提供的是一种前后端不分离的登录
在全局下的urls.py中添加如下代码
from django.contrib import admin
from d