cookie session token APi Key区别和联系

终于理解token了,这个契机还是再使用open AI的API Key时候。

cookie-session主要是服务器端实现的,解决的问题主要就是服务器的无状态限制;一般我们也可以把cookie叫做session ID,这个主要就是为了存储用户在本次session期间的信息。一般使用cookie也可以保证是用户在和服务器进行操作。

而token与API Key就是一个用来验证请求服务器资源的客户端合法性的一个东西,这个在和服务器交流时候并不需要让服务器保持一个有状态也就是不需要维持一个会话,因为我们可能仅仅想请求资源罢了。而且这个请求资源也不一定是用户,可能是一些脚本。

但是token和api key的区别其实不大。

from gpt:

Cookie和Session是服务器端实现的,解决的问题主要就是服务器的无状态限制;一般我们也可以把cookie叫做session ID,这个主要就是为了存储用户在本次session期间的信息。一般使用cookie也可以保证是用户在和服务器进行操作。

而Token与API Key则是客户端实现的。Token是一种用于验证客户端请求的身份验证方式,它通常包含了一些元数据,比如过期时间等等。API Key则是一种用于验证客户端请求的身份验证方式,它通常包含了一些元数据,比如过期时间等等。如果您需要更多细节,请告诉我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个技术问题,我可以直接回答。 代码如下: ```python from fastapi import FastAPI, Depends, Request, Response from fastapi.responses import JSONResponse from fastapi.security import HTTPBasic, HTTPBasicCredentials from datetime import timedelta app = FastAPI() security = HTTPBasic() users = {"john": "password", "jane": "secret"} @app.post("/login") def login(response: Response, credentials: HTTPBasicCredentials = Depends(security)): correct_username = credentials.username in users correct_password = users.get(credentials.username) == credentials.password if not (correct_username and correct_password): return JSONResponse({"error": "Bad username or password"}, status_code=400) access_token = credentials.username + "secret" response.set_cookie(key="access_token", value=access_token, httponly=True) return {"message": "Welcome"} @app.get("/data") def read_data(request: Request, access_token: str = Depends(security)): session_token = request.cookies.get("access_token") if session_token != access_token: raise HTTPException(status_code=400, detail="Invalid access token") return {"data": "Some data"} @app.get("/logout") def logout(response: Response): response.delete_cookie(key="access_token") return {"message": "Logged out"} @app.middleware("http") async def add_process_time_header(request: Request, call_next): response = await call_next(request) max_age = 1800 # 30 minutes response.headers["Cache-Control"] = f"max-age={max_age}, must-revalidate" response.headers["Pragma"] = "no-cache" response.headers["Expires"] = "0" return response ``` 在这个例子中,我们使用了 `response.set_cookie()` 来设置会话令牌,通过这个令牌我们可以识别用户身份。我们可以使用 `request.cookies.get()` 来获得用户的会话令牌,并验证它是否与传递的访问令牌相同,来保证访问的安全性。我们通过注册一个中间件函数来设置响应头中的缓存控制字段,来保证每个响应在客户端中都具有唯一性。我们可以使用 `timedelta` 类来设置会话超时时间。 希望这个示例有助于您实现您的代码!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值