回顾
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内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。