Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x FastAPI掩蔽场_Python 3.x_Openapi_Fastapi - Fatal编程技术网

Python 3.x FastAPI掩蔽场

Python 3.x FastAPI掩蔽场,python-3.x,openapi,fastapi,Python 3.x,Openapi,Fastapi,我将遵循有关网络安全性的教程 以具有以下端点结束: @app.post(“/token”,response\u model=token) 异步def登录(表单\数据:OAuth2PasswordRequestForm=Dependes()): user=authenticate\u user(假用户\u db,form\u data.username,form\u data.password) 如果不是用户: 引发HTTPException( status\u code=status.HTTP\

我将遵循有关网络安全性的教程

以具有以下端点结束:

@app.post(“/token”,response\u model=token)
异步def登录(表单\数据:OAuth2PasswordRequestForm=Dependes()):
user=authenticate\u user(假用户\u db,form\u data.username,form\u data.password)
如果不是用户:
引发HTTPException(
status\u code=status.HTTP\u 401\u未经授权,
detail=“用户名或密码不正确”,
headers={“WWW-Authenticate”:“Bearer”},
)
访问令牌过期=时间增量(分钟=访问令牌过期分钟)
访问令牌=创建访问令牌(
data={“sub”:user.username},expires\u delta=access\u token\u expires
)
返回{“访问令牌”:访问令牌,“令牌类型”:“承载者”}
导致了以下狂妄自大:

我的问题: 有没有一种简单的方法来屏蔽密码字段?所以我没有在纯文本中看到它?
就像我们可以使用授权按钮一样。

您可以使用Pydantic的
SecretStr
。它只是将
{“format”:“password”}
添加到OpenAPI模式中

从fastapi导入fastapi,具体取决于
来自pydantic import BaseModel,SecretStr
类用户(基本模型):
用户名:str
密码:SecretStr
app=FastAPI()
@app.post(“/用户”)
异步def create_user(user:user=Depends()):
打印(user.password.get\u secret\u value())
您将拥有此功能,有关更多信息,请参阅


根据@Yagiz answer的说法,这是有效的:


类CustomOAuth2PasswordRequestForm(OAuth2PasswordRequestForm):
定义初始化__(
自己
授权类型:str=Form(…,regex=“password”),
用户名:str=Form(…),
密码:SecretStr=Form(…),
范围:str=Form(“”),
客户id:可选[str]=表格(无),
客户机密:可选[str]=表格(无),
):
超级()。\uuu初始化__(
授予类型=授予类型,
用户名=用户名,
密码=密码,
范围=范围,
客户号=客户号,
客户机密=客户机密,
)

谢谢您的回答,但是端点取决于OAuth2PasswordRequestForm,所以我需要超级种子类吗?和带有密码的super init方法:SecretStr=Form(…)?是的,这应该也很好,您可以单击右上角的“Authorize”按钮,而不是直接使用/login路由,这将屏蔽密码表单输入。