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)
    )
相关推荐
惊讶的猫几秒前
mysql-多表连接查询(JOIN)
数据库·sql·mysql
小羊没烦恼!4 分钟前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
aibo86030811 分钟前
基于 Spring Boot + Vue3 的餐饮食材采购与成本分析系统设计与实现
java·spring boot·后端
Zella折耳根14 分钟前
实验2进阶版数据看板的设计与实现
python
Rain的Java大神之路16 分钟前
面了上百人,我最爱问的LeetCode 1「两数之和」:能背代码的很多,能讲清“先查后存”的没几个
java·后端·算法
xiaogai_gai16 分钟前
委外出入库单从旺店通同步到 MySQL:基于轻易云的实战方案
数据库·mysql
aibo86030819 分钟前
基于 Spring Boot + Vue3 的菜谱分享网站设计与实现
java·spring boot·后端
凤山老林20 分钟前
Spring Boot 集成 TOTP 双因素认证与恢复码机制
java·spring boot·后端
vipxieliang21 分钟前
ThinkPHP MVC 模式入门:从控制器到视图的完整实践
后端·php·thinkphp
Mortalbreeze22 分钟前
MySQL 基础篇(十):用户管理
数据库·mysql