Django之DRF-授权、认证、登录

一、认证

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部