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

1. crud/users.py

python 复制代码
# 生成 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

python 复制代码
# 生成 Token
token = await users.create_token(db, user.id)

完整代码

python 复制代码
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
            }
        }
    }
相关推荐
2601_9516437714 分钟前
Python第一,Java跌出前三,C语言杀回来了
java·c语言·python·编程语言排行·技术趋势
张忠琳1 小时前
【Go 1.26.4】Golang Select 深度解析
开发语言·后端·golang
IT_陈寒2 小时前
React中useEffect依赖项这个坑我居然踩了三天
前端·人工智能·后端
AC赳赳老秦2 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
提笔了无痕2 小时前
如何用Go实现整套RAG流程
开发语言·后端·golang
成都第一深情IZZO3 小时前
事务未提交就发送 MQ,导致消费者读不到订单数据的问题
后端
大橙子打游戏3 小时前
Fable5不能用了,但是依然能让 AI 纯靠截图玩通宝可梦
后端
Jason_chen3 小时前
Linux 3.0 总线机制与故障排查详解
后端
成都第一深情IZZO3 小时前
Spring Boot 动态数据源在事务中切库失效问题排查
后端
_遥远的救世主_3 小时前
稳定性工程:SLO 量化、降级收敛与故障兜底体系
后端