手把手教你做测开:开发Web平台之登录认证

发表于:2022-7-04 09:29

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Beck    来源:51Testing软件测试网原创

  回顾
  在上篇文章《手把手教你做测开:开发Web平台之环境准备》中,我们做了以下几件事情:
  1. 搭建了前后端项目工程
  2. 安装了前后端的依赖
  3. 配置并启动了前后端服务
  4. 创建了后端子应用
  5. 将Rest Framework和数据库连接信息配置进后端的配置文件中
  也许你已经蠢蠢欲动准备写代码了,看到这里恭喜你,我们马上进入代码环节。在这篇文章中,我们将完成以下功能的实战:
  1. 后端登录认证的实现
  2. 前后端服务关联配置
  3. 前端登录逻辑的梳理
  4. 前端登录逻辑的修改
  5. 跨域问题的解决
  后端登录认证的实现
  说到Web端的认证机制,作为测试人员,我们能想到的是cookie、session、token。那么Django中也为我们提供了一些jwt(Json Web Token)认证的方式。
  有djangorestframework-jwt、djangorestframework-simplejwt等依赖库,由于前者已经不维护了,我们本次使用后者(官方文档:https://django-rest-framework-simplejwt.readthedocs.io/en/latest/)。
  jwt安装与配置
  可以使用pip install djangorestframework-simplejwt来安装,但我们之前已经安装过了。
  在后端配置文件settings.py中配置。这里需要注意,simplejwt为我们提供了两个token,一个是access token,一个是refresh token。
  ACCESSTOKENLIFETIME是access token的过期时间,配置为5分钟,REFRESHTOKENLIFETIME是refresh token的过期时间,默认为1天。
  当access token失效时,refresh token会自动获取一个新的access token,使得用户保持在登录态,直到refresh toke过期,用户再做重新登录。否则access token一旦失效,用户就要重新登录体验会比较差。
 from datetime import timedelta

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
  }
  
  
  
SIMPLE_JWT = {
    'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
    'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
    'ROTATE_REFRESH_TOKENS': False,
    'BLACKLIST_AFTER_ROTATION': False,
    'UPDATE_LAST_LOGIN': False,

    'ALGORITHM': 'HS256',
    'SIGNING_KEY': SECRET_KEY,
    'VERIFYING_KEY': None,
    'AUDIENCE': None,
    'ISSUER': None,
    'JWK_URL': None,
    'LEEWAY': 0,

    'AUTH_HEADER_TYPES': ('Bearer',),
    'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
    'USER_ID_FIELD': 'id',
    'USER_ID_CLAIM': 'user_id'
    }
本文源自第六十六期《51测试天地》
《django+vue: 手把手教你开发web平台—登录认证》一文
查看更多精彩内容,请点击下载:
  版权声明:本文出自《51测试天地》第六十五期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号