day03-项目视频目录

  1. 用户部分-用户登录(API接口设计&jwt扩展登录视图使用)

    API接口设计:
    	POST /authorizations/
    	参数:
    		{
                "username": "用户名",
                "password": "密码"
    		}
    	响应:
    		{
                "user_id": "用户id",
                "username": "用户名",
                "token": "jwt token"
    		}
    		
    jwt 扩展登录视图:
    	from rest_framework_jwt.views import obtain_jwt_token
    	obtain_jwt_token:接收username和password并进行校验,如果正确,会生成一个jwt token并返回
    
  2. 用户部分-用户登录(自定义jwt扩展登录视图响应数据函数)

    1)自定义登录视图响应数据函数
    def jwt_response_payload_handler(token, user=None, request=None):
        """
        自定义jwt认证成功返回数据
        """
        return {
            'token': token,
            'user_id': user.id,
            'username': user.username
        }
    
    2)修改jwt扩展配置项
    # JWT扩展配置
    JWT_AUTH = {
        # ......
        'JWT_RESPONSE_PAYLOAD_HANDLER': 'users.utils.jwt_response_payload_handler',
    }
    
  3. 用户部分-用户登录(前端vue逻辑)

  4. 用户部分-用户登录(登录账户支持用户名和手机号)

    多账户登录:登录账户支持用户名和手机号。
    
    -> post /authorizations/
    -> obtain_jwt_token: 此视图内部没有自己实现账户名和密码校验的过程,而是调用Django认证系统的authenticate来进行账户名和密码的检验
    -> from django.contrib.auth import authenticate:此方法内部也没有自己实现账户名和密码校验的过程,而是调用Django认证系统后端类ModelBackend中authenticate进行了账户和密码的检验
       from django.contrib.auth.backends import ModelBackend
       ModelBackend中的authenticate进行账户和密码校验时,账户名只支持用户名。
    
    步骤:
    	1)自定义Django的认证后端类,继承于ModelBackend,重写authenticate方法,让账户既可以是用户名,也可以手机号
    	2)修改Django的认证后端类
    		AUTHENTICATION_BACKENDS = ['自定义认证后端类']
    
  5. 用户部分-QQ登录(QQ登录效果演示&开发预备工作)

    QQ登录:
    	当用户使用QQ登录时,会判断QQ用户和网站本身用户是否绑定过,如果已经绑定过,会直接让对应的用户登录成功,否则会让用户先进行绑定操作,绑定之后才能登录成功。
    	
    	
    开发预备工作:
    1)注册成为QQ开发者
    2)登录开发者账户,创建开发者应用,提供信息并等待审核
    3)审核通过,获取appid和appkey,然后就可以进行QQ相关功能开发。
    
  6. 用户部分-QQ登录(QQ登录关键点说明&模型类定义&工具类集成)

    QQ登录关键点:
    	获取QQ登录用户openid(`唯一身份标识`),然后判断openid和网站本身的用户是否进行了绑定,如果绑定过,直接让用户登录成功;如果未绑定,先让用户进行绑定,把绑定的数据存下来,然后让用户登录成功。
    
    idopeniduser_id
    1DKKDKKDS1288dKKDkdkdkE2
  7. 用户部分-QQ登录(基础知识-urllib模块和itsdangerous模块的使用)

    itsdangerous:
    	数据的签名加密和解密。
    
  8. 用户部分-QQ登录(QQ登录开发流程图和API接口分析)

    1)获取QQ登录用户的网址
    2)获取QQ登录用户的openid并处理
    3)保存QQ登录的绑定数据
    
  9. 用户部分-QQ登录(Step1-获取QQ登录网址-API接口设计与实现)

    API接口设计:
    	GET /oauth/qq/authorization/?next=<登录之后访问页面地址>
    	参数:
    		通过查询字符串传递<登录之后访问页面地址>
    	响应:
    		{
                "login_url": "<QQ登录网址>"
    		}
    
  10. 用户部分-QQ登录(Step1-前端vue逻辑)

    点击`QQ登录`,访问后端`获取QQ登录网址`API接口,然后前端访问`QQ登录网址`,最终显示`QQ授权登录`页面。
    
  11. 用户部分-QQ登录(Step2-获取QQ登录用户openid并处理-API接口设计与实现)

    API接口设计:
    	GET /oauth/qq/user/?code=<code>
    	参数:
    		通过查询字符串传递code参数
    	响应:
    		1)如果openid已经绑定过本网站用户,直接生成jwt token并返回
    		{
                "user_id": "用户id",
                "username": "用户名",
                "token": "jwt token"
    		}
    		2)如果openid未绑定过本网站用户,将openid加密并返回
    		{
                "access_token": "加密openid内容"
    		}
    

    ‘ED8D5BA99D9DED64EF305E1CFA9227DD’

  12. 用户部分-QQ登录(Step2-前端vue逻辑)

  13. 用户部分-QQ登录(Step3-保存QQ登录绑定数据-API接口设计与实现)

  14. 用户部分-QQ登录(Step3-前端vue逻辑)

今日内容

1)登录API

​ 登录API接口设计->

​ jwt扩展登录视图:obtain_jwt_token->

​ 响应数据只有token->

​ 自定义jwt 扩展登录视图响应数据函数

2)多账户登录

​ 需求:登录账户支持用户名和手机号

​ 步骤:

​ a)自定义Django的认证后端类,继承于ModelBackend,重写authenticate方法,让账户既可以是用户名,也可以手机号

​ b)修改Django的认证后端类 AUTHENTICATION_BACKENDS = [‘自定义认证后端类’]

3)QQ登录

​ QQ登录效果->QQ开发预备工作->QQ开发关键点(openid)->QQ绑定数据表->集成QQ开发工具类&配置->urllib和itsdangerous->QQ登录开发流程和API接口分析:

​ a)获取QQ登录网址

​ b)获取QQ登录用户openid并处理

​ c)绑定QQ登录绑定数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值