【发布时间】:2022-12-25 09:33:34
【问题描述】:
我正在使用 FastApi、React 和 MongoDb 创建一个基本的登录系统。 我想将 JWT 存储在 cookie 中,但对我没有任何用处,我真的不想将它们存储在 LocalStorage 中...... 有人可以告诉我我的代码有什么问题吗?
@app.post("/login")
async def login(response:Response,data: OAuth2PasswordRequestForm=Depends()):
username = data.username
password = data.password
user = await query_user(username)
if not user:
raise InvalidCredentialsException
if not verify_password(password,user["password"]):
raise InvalidCredentialsException
access_token = accessToken.create(user)
refresh_token = refreshToken.create(user)
response.set_cookie(key="access_token",value=f"Bearer {access_token}", httponly=True)
response.set_cookie(key="refresh_token",value=f"Bearer {access_token}", httponly=True)
return response
【问题讨论】:
-
如果您正在设置 cookie,并且您使用
access_token作为刷新和访问令牌的值,则绝对不需要在任何内容前加上Bearer前缀。但是,如果您使用的是 React,则必须确保按照您的计划设置和返回 cookie——由于越来越多的浏览器禁止第三方 cookie,因此您必须同时为您的 React 应用提供服务和您的后端来自同一主机。 “没有什么对我有用”是什么意思?您是否在响应中设置了 cookie?它们是否包含在任何未来的请求中?你如何提出要求?
标签: jwt fastapi cookie-httponly