简单絮叨一些
前面一篇文章唠了依赖项,今天主要唠下安全性。
更多的就是身份认证或者授权等问题,一听这词就感觉很复杂,fastapi
提供了专门处理安全性的工具
安全性
使用密码和 Bearer
的简单 OAuth2
此处使用的是OAuth2
中的password
流
password流
是 OAuth2
中定义的一种方式(流),用于处理安全和身份验证。
OAuth2
指在使后端或 API
可以独立于对用户进行身份验证的服务器。
鉴于这个鬼玩意比较生疏,针对代码一段一段且一步一步的唠:
fake_users_db
是定义了一个字典,就可以直接理解为是伪数据库,因为这些后期都是从数据库获取的
fake_users_db = {
"johndoe": {
"username": "johndoe",
"full_name": "John Doe",
"email": "johndoe@example.com",
"hashed_password": "fakehashedsecret",
"disabled": False,
},
"alice": {
"username": "alice",
"full_name": "Alice Wonderson",
"email": "alice@example.com",
"hashed_password": "fakehashedsecret2",
"disabled": True,
},
}
- 这个就是
new
一个对象,不再多叙述
app = FastAPI()
fake_hash_password(password: str):
函数实际功能就是获取到字符串,然后进行拼接后再返回
def fake_hash_password(password: str):
return "fakehashed" + password
oauth2_scheme=OAuth2PasswordBearer(tokenUrl="token")
就是new
一个对象。而OAuth2PasswordBearer
类是继承OAuth2
规范的密码流获取令牌
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
- 创建的模型,它是继承基类
BaseModel
class User(BaseModel):
username: str
email: Optional[str] = None
full_name: Optional[str] = None
disabled: Optional[bool] = None
- 创建的模型,区别就是它继承的是
User
类
class UserInDB(User):
hashed_password: str