当前位置: 首页 > news >正文

AI掘金头条新闻系统 (Toutiao News)-用户注册-生成Token

1.crud/users.py

# 生成 Token async def create_token(db: AsyncSession, user_id: int): # 生成 Token token = str(uuid.uuid4()) # 设置过期时间 expires_at = datetime.now() + timedelta(days=7) # 查询数据库当前用户是否有 Token query = select(UserToken).where(UserToken.user_id == user_id) result = await db.execute(query) user_token = result.scalar_one_or_none() # 有:更新 if user_token: user_token.token = token user_token.expires_at = expires_at await db.commit() # 没有: 添加 else: user_token = UserToken(user_id=user_id, token=token, expires_at=expires_at) db.add(user_token) await db.commit() return token

2.routers/users.py

# 生成 Token token = await users.create_token(db, user.id)

完整代码

from fastapi import APIRouter from fastapi.params import Depends from sqlalchemy.ext.asyncio import AsyncSession from common.result import Result from config.db_confing import get_db from schemas.users import UserRequest from crud import users router = APIRouter(prefix="/api/user", tags=["users"]) # 用户注册 @router.post("register") async def register(user_data: UserRequest, db: AsyncSession = Depends(get_db)): # 根据用户名查询数据库 db_user = await users.get_user_by_username(db, user_data.username) if db_user: return Result.error("用户已存在", 400) # 新增用户 user = await users.create_user(db, user_data) # 生成 Token token = await users.create_token(db, user.id) return { "code": 200, "message": "注册成功", "data": { "token": token, "userInfo": { "id": user.id, "username": user_data.username, "bio": user.bio, "avatar": user.avatar } } }
http://www.jsqmd.com/news/885417/

相关文章:

  • 中小企业本地化RAG一体机实测:从“文档杂乱”到“5秒溯源”,一个开箱即用的工程方案
  • Google 官方回应:GEO 不会取代 SEO,AI 搜索时代真正重要的是“内容理解力”
  • AI教材生成大揭秘:低查重工具实测,快速完成教材编写任务!
  • M1 Mac 装 Ollama,我被 Docker 骗了三次
  • 零基础怎么学Agent?这个工程师考试内容拆给你看
  • 成都摩托驾考技术全解析 专业驾校判定指南 - 奔跑123
  • ctf show web 入门171
  • 基于Cynthion逆向USB协议,为DP100电源开发Linux控制软件
  • 陕西西安月嫂怎么选?五大机构深度测评,孕产家庭省心避坑指南 - 深度智识库
  • 强化学习PPO算法优化与T-PPO框架实践
  • 告别呆板动画!Godot 4 AnimationPlayer保姆级教程:单图、逐帧、骨骼动画全搞定
  • Unity InputSystem避坑指南:手机触摸屏多点触控冲突?教你用屏幕分区完美解决移动与视角控制
  • 成都摩托驾培专业度判定指南 实操技术全解析 - 奔跑123
  • 2025-2026年国内巨量本地推代理推荐:TOP5榜单评测本地推成本控制市场份额价格
  • 安卓HTTPS抓包实战:绕过SSL Pinning与Fiddler证书配置全解
  • 成都学车靠谱判定指南:西华驾校核心维度解析 - 奔跑123
  • 告别漫长等待:UE5.2.1 Windows打包效率优化与插件问题排查指南
  • 【仅限首批200位架构师获取】DeepSeek v3.2设计模式补丁包:含4个已验证的Pattern-Override补丁
  • AI 到底是怎么访问网页的?从爬虫、Browser Agent 到 Computer Use
  • Apache路径规范化与访问控制时序漏洞深度解析
  • 2026年5月未央区知名的宠物医院正规连锁宠物医院人气榜单 - 速递信息
  • 自动驾驶路径规划:Google OR-Tools与Q-Learning在TSP问题上的实战对比
  • 2026年成都AI视频制作本地服务商TOP5测评:双紫星科技口碑与实力双推荐 - 速递信息
  • 电教馆影子教师证全国报名机构推荐:线上学习考试 - 实时教育培训动态
  • CANN-昇腾NPU-GE编译优化-graph-autofusion进阶
  • 微服务寻址的“智慧大脑”:一篇文章彻底搞懂 Nacos 注册中心与实战
  • 建议收藏|降AI率网站深度测评与推荐2026最新版
  • 招行+工行:ReAct(Reasoning + Acting) 讲清楚,并结合 金融场景(含自进化智能体) 给出可直接用的案例
  • 微服务架构的“动态遥控器”:一篇文章彻底搞懂 Nacos 配置中心与实战
  • 像素风射击游戏的整数物理与帧锁定设计