《FastAPI零基础入门与进阶实战》第09篇:Token获取与登录API

系列文章目录

《FastAPI零基础入门与进阶实战》https://blog.youkuaiyun.com/sen_shan/category_12950843.html第08篇:基础模块之API 的响应和错误处理https://blog.youkuaiyun.com/sen_shan/article/details/147414452?spm=1011.2415.3001.5331


文章目录

目录

系列文章目录

文章目录

前言

BaseModel:login_manager

安装JWT

Config配置

安全相关模块

dependencies

软件包定义

Main.py

运行服务

Apipost


前言

        本案例只是用于测试,随着程序深入将会根据实际情况再做调整。

        登录获取Token是API开发的关键环节,本章节将详细讲解登录流程及Token的获取方法。


BaseModel:login_manager

在  src  目录下创建一个名为  models  的文件夹,然后在  models  文件夹内新建一个名为  login_manager.py  的文件

from pydantic import BaseModel


# 定义登录请求模型
class LoginRequest(BaseModel):
    username: str
    password: str


class LoginManager:
    def __init__(self, app_id=None,
                 api_key=None,
                 user_id=None,
                 username=None,
                 token_key=None,
                 token_id=None,
                 email=None,
                 role=None):
        self.app_id = app_id
        self.api_key = api_key
        self.user_id = user_id
        self.username = username
        self.role = role
        self.token_key = token_key
        self.token_id = token_id
        self.email = email

    def get(self):
        return {
            "app_id": self.app_id,
            "api_key": self.api_key,
            "user_id": self.user_id,
            "username": self.username,
            "role": self.role,
            "email": self.email
        }

    def ret(self):
        return {
            "api_key": self.api_key,
            "username": self.username,
            "token_key": self.token_key,
            "role": self.role,
            "email": self.email
        }

    def loginData(self):
        return {
            "user_id": self.user_id,
            "username": self.username,
            "role": self.role,
            "email": self.email
        }

    def update_app_id(self, new_app_id):
        self.app_id = new_app_id

    def update_api_key(self, new_api_key):
        self.api_key = new_api_key

    def update_user_id(self, new_user_id):
        self.user_id = new_user_id

    def update_username(self, new_username):
        self.username = new_username

    def update_token_key(self, new_token_key):
        self.token_key = new_token_key

    def update_role(self, new_role):
        self.role = new_role

    def update_email(self, new_email):
        self.email = new_email

以下是代码的功能性说明:


导入模块

• `from pydantic import BaseModel`:从`pydantic`库中导入`BaseModel`类,用于定义数据模型,支持数据验证和序列化等功能。


数据模型定义

• `LoginRequest`类:

        • 继承自`BaseModel`。

        • 定义了登录请求所需的两个字段:

                • `username`:用户名,类型为字符串。

                • `password`:密码,类型为字符串。

        • 用于规范登录请求的数据结构,确保请求中包含必要的用户名和密码字段。


登录管理类

• `LoginManager`类:

        • 初始化方法:

        • 接收多个可选参数,包括:

                • `app_id`:应用ID。

                • `api_key`:API密钥。

                • `user_id`:用户ID。

                • `username`:用户名。

                • `token_key`:令牌密钥。

                • `token_id`:令牌ID。

                • `email`:用户邮箱。

                • `role`:用户角色。

        • 将这些参数初始化为类的属性,用于存储与登录相关的各种信息。

        • `get`方法:

        • 返回一个字典,包含以下信息:

                • `app_id`:应用ID。

                • `api_key`:API密钥。

                • `user_id`:用户ID。

                • `username`:用户名。

                • `role`:用户角色。

                • `email`:用户邮箱。

        •

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值