You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设计对接React/JS前端的Python后端API?含GitHub OAuth与AWS集成

解决方案

1. 绝对别让前端传GitHub令牌给后端

把GitHub的access token暴露在前端或者传递给后端是严重的安全风险——任何拿到这个令牌的人都能以用户身份调用GitHub API,删仓库、改账号设置都不在话下,完全违反OAuth的安全设计逻辑。

2. 走正确的GitHub OAuth授权流程

你得用授权码流程,步骤是这样的:

  • 前端引导用户跳转到GitHub的授权页,用户确认授权后,GitHub会给前端返回一个授权码(code)
  • 前端只把这个code传给Flask后端,全程别碰token
  • 后端拿着这个code,加上你在GitHub注册OAuth应用时拿到的Client ID和Client Secret,去GitHub换真正的access token
  • 换完token后,后端调用GitHub的/user接口,拿到用户的唯一标识(比如id或者login字段,这个是用户的固定标识)

3. 后端自己管理用户会话识别

拿到用户的唯一标识后,后端要生成自己的会话凭证,别依赖GitHub的token:

  • 简单方案用Flask自带的session:把用户ID存到session里,Flask会自动做签名加密,前端每次请求会自动携带cookie,后端直接从session里取用户ID就行
  • 要是前后端完全分离(比如前端是纯静态部署),就生成JWT令牌,把用户ID塞进去返回给前端,前端存在localStorage或者cookie里,之后每次请求都在请求头里带Authorization: Bearer <你的JWT>,后端验证签名后就能解析出用户ID

4. 数据持久化靠数据库实现

  • 在Heroku上搭个PostgreSQL数据库(Heroku自带免费额度),建个用户表,存储GitHub用户的唯一标识、昵称这些基础信息
  • 用户用你的服务创建AWS Lambda/EC2资源后,把资源的信息(比如Lambda函数名、EC2实例ID)和用户ID关联起来存在业务表中
  • 之后用户再请求数据时,后端先通过会话凭证拿到用户ID,直接去数据库查询这个用户对应的所有AWS资源,返回给前端即可

内容的提问来源于stack exchange,提问作者Winston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:22:44