AI掘金头条新闻系统 (Toutiao News)-获取用户信息

1. crud/users.py

python 复制代码
# 根据 Token 查询用户:验证 Token -> 查询用户
async def get_user_by_token(db: AsyncSession, token: str):
    query = select(UserToken).where(UserToken.token == token)
    result = await db.execute(query)
    db_token = result.scalar_one_or_none()

    if not db_token or db_token.expires_at < datetime.now():
        return None

    query = select(User).where(User.id == db_token.user_id)
    result = await db.execute(query)
    return result.scalar_one_or_none()

2. utils/auth.py

python 复制代码
from fastapi import Header, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from starlette import status
from config.db_confing import get_db
from crud import users


# 整合 根据 Token 查询用户,返回用户
async def get_current_user(
        authorization: str = Header(..., alias="Authorization"),
        db: AsyncSession = Depends(get_db)
):
    # Bearer xxxxx
    # token = authorization.split(" ")[1]
    token = authorization.replace("Bearer ", "")
    user = await users.get_user_by_token(db, token)
    if not user:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="无效的令牌或已经过期的令牌")

    return user

3. routers/users.py

python 复制代码
# 查 Token 查用户 -> 封装 crud -> 功能整合成一个工具函数 -> 路由导入使用:依赖注入
@router.get("/info")
async def get_user_info(user: User = Depends(get_current_user)):
    return success_response(
        message="获取用户信息成功",
        data=UserInfoResponse.model_validate(user)
    )
相关推荐
AI绘画哇哒哒8 小时前
【建议收藏!】35岁后端血泪忠告,这3类人别硬转Agent(过来人亲述)
java·人工智能·后端·ai·程序员·大模型·agent
聪明蛋子哟8 小时前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
唐青枫9 小时前
一个值多种形态:Zig union、Tagged Union 与内存布局实战
后端
今天AI了吗9 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
卷无止境9 小时前
Windows 上丝滑开发 Python,并稳定构建 Docker 镜像
后端·python·docker
Nturmoils9 小时前
备份完不算完,先还原到临时库验一遍
后端
TELL5219 小时前
selenium webdriver 第二次初始化的异常
开发语言·python
Csvn10 小时前
📊 SQL 入门 Day 22:视图与物化视图
后端·sql
Csvn10 小时前
🐍 Day 4: Python 控制流 — 条件、循环与推导式的艺术
后端·python
夜雪一千10 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb