каждый раз, когда я успешно захожу и хочу перенаправить на / добро пожаловать, я получаю сообщение об ошибке и не знаю почему.
Вот мой код:
import secrets
from typing import Dict
from fastapi import FastAPI, HTTPException, status, Depends, Cookie, Form, Response, Request
from pydantic import BaseModel
from fastapi.encoders import jsonable_encoder
from fastapi.responses import JSONResponse
from fastapi.exceptions import RequestValidationError
from fastapi.security import HTTPBasic, HTTPBasicCredentials
from hashlib import sha256
app = FastAPI()
security = HTTPBasic()
app.secret_key = "very constatn and random secret, best 64 characters"
app.sessions= []
@app.get("/welcome")
def welcome(request: Request, token = Cookie(None)):
if token in app.sessions:
return {"message": "No hej"}
else:
raise HTTPException(status_code=401, detail="Login first")
@app.post("/login")
def Login(response: Response,credentials: HTTPBasicCredentials = Depends(security)):
correct_username = secrets.compare_digest(credentials.username, "root")
correct_password = secrets.compare_digest(credentials.password, "toor")
if (correct_username and correct_password):
session_token = sha256(bytes(f"{credentials.username}{credentials.password}{app.secret_key}", encoding='utf8')).hexdigest()
response.status_code = status.HTTP_302_FOUND
response.set_cookie(key="session_token", value=session_token)
app.sessions += session_token
response.headers['Location'] = "/welcome"
return response
else:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect login or password",
)
А вот сообщение об ошибке:
response.set_cookie(key="session_token", value=session_token)
AttributeError: 'Response' object has no attribute 'set_cookie'
В / документы после входа в систему я получаю:
500 Internal Server Error
Если я переключаюсь / вход в систему с POST на GET и после входа в систему это показывает:
{"detail":[{"loc":["body","response"],"msg":"field required","type":"value_error.missing"}]}
Есть предложения?