Python 测开27期 - WL - 学习笔记 - 平台登录功能实战

平台登录功能实战

测试平台登录功能

  • 平台需要校验用户身份
  • 平台需要具有权限功能

登录功能流程

携带身份信息的方式

登录成功后,业务请求需要携带身份信息

  • 携带身份信息的方式
    ** Cookie
    ** 请求头
    ** 请求参数

登录前端设计思路

image

登录界面

登录路由

  • 注册登录页面路由
    image

接口文档

前端定义登录接口

前端配置路由守卫

  • 除了登录路由,其余路由都需要先验证是否有 token 信息
  • 没有 token 信息时,强制进入登录页面
    image

前端配置请求拦截器

  • 登录后所有接口请求自动携带 token 信息
    image
  • 登录不成功时,自动清除掉 token 信息
    image

退出登录

  • 增加退出登录按钮,点击后清楚 token 信息
    image

密码输入框显示为密文

image


设计登录接口

image

后端设计

创建用户表

定义接口

image

后端鉴权逻辑

  • 登录接口
    ** 前端传入用户名密码
    ** 查询用户是否存在
    ** 查询到用户后,对比密码是否一致
    ** 用户名密码正确,返回登录成功信息和 token
  • 注册接口
    ** 从请求信息中获取 token
    ** 后端解密 token 做身份校验
    ** 正确的话,返回对应业务数据

登录接口实现

生成 token

  • 方式
    ** base64:用于二进制数据与可打印 ASCII 字符之间的转换操作
    ** hashlib:提供了常见的单向加密算法(如MD5,SHA等)
    ** jwt(JSON Web Tokens):应用在系统的用户认证
  • JWT 优势
    ** 用户登录成功后,服务端通过 jwt 生成一个随机 token 给用户
    ** 服务端无需保留 token
    ** 用户再访问时需携带 token
    ** 服务端接收到 token 之后,通过 jwt 对 token 进行校验是否超时,是否合法
  • Flask-JWT-Extended:拓展性更强的 JWT 插件

Flask-JWT-Extended 的使用

使用 JWT 生成 token

  • 登录接口
    ** 验证用户名密码是否正确
    ** 如果正确返回 token
    ** 如果错误返回对应错误码

路由鉴权

  • 访问的时候需要验证登录信息
  • 可以通过 @jwt_required() 装饰器实现
    image

登录与测试用例服务结合

  • 使用 MySQL 数据库
  • 配置 swagger 信息
  • 使用 flask-restx 完成路由注册
  • 配置路由保护

跨域

  • 跨域请求:同源判断,
  • CSRF(Cross-site reuqest forgery),中文名:跨站请求伪造
  • 如果两个 URL 的 protocol-协议、port-端口(如果有指定的话)和host-主机都相同的话,则这两个URL是同源
  • 安装flask-cors:pip install -U flask-cors
    image