当前位置:   article > 正文

Django项目--用户登录(JWT认证)_django 怎么做第三方登录验证

django 怎么做第三方登录验证

官方​​​​​​​​​​​​​​文档网站https://jpadilla.github.io/django-rest-framework-jwt/#usage

JWT官方网址有兴趣可以看一看

一、使用JWT需要的配置

1、安装jwt包

pip install djangorestframework-jwt

2、dev文件中修改配置

  1. REST_FRAMEWORK = {
  2. 'DEFAULT_AUTHENTICATION_CLASSES': (
  3. 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', #JWt认证
  4. 'rest_framework.authentication.SessionAuthentication', #基本认证
  5. 'rest_framework.authentication.BasicAuthentication', #session认证
  6. ),
  7. }
  8. JWT_AUTH = {
  9. 'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), #设置登录有效期
  10. # 修改JWT的登录视图的构造函数
  11. 'JWT_RESPONSE_PAYLOAD_HANDLER': 'users.utils.jwt_response_payload_handler',
  12. }
  13. # 修改Django用户认证后端类
  14. AUTHENTICATION_BACKENDS = [
  15. 'users.utils.UsernameMobileAuthBackend',
  16. ]

3、创建utils.py

不需要views实现功能,所以我们创建一个utils来实现登录功能

  1. ef get_user_by_account(account):
  2. """
  3. 根据帐号获取user对象
  4. :param account: 账号,可以是用户名,也可以是手机号
  5. :return: User对象 或者 None
  6. """
  7. try:
  8. if re.match('^1[3-9]\d{9}$', account):
  9. # 帐号为手机号
  10. user = User.objects.get(mobile=account)
  11. else:
  12. # 帐号为用户名
  13. user = User.objects.get(username=account)
  14. except User.DoesNotExist:
  15. return None
  16. else:
  17. return user
  18. class UsernameMobileAuthBackend(ModelBackend):
  19. """
  20. 自定义用户名或手机号认证
  21. """
  22. def authenticate(self, request, username=None, password=None, **kwargs):
  23. user = get_user_by_account(username)
  24. if user is not None and user.check_password(password):
  25. return user

4、更新上次写的serializers.py

在create函数中加入

  1. # 补充生成记录登录状态的token
  2. jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
  3. jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
  4. payload = jwt_payload_handler(user)
  5. token = jwt_encode_handler(payload)
  6. user.token = token

序列化器中加入token,可以勾选记住登录。

    token = serializers.CharField(label='token', read_only=True)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/893710
推荐阅读
相关标签
  

闽ICP备14008679号