728x90
๋ฌธ์
- logout์ ํ ๋ค์ ๋ก๊ทธ์ธ ๊ถํ์ด ํ์ํ ํ์ด์ง๋ก ๋ค๋ก ๊ฐ๊ธฐ๋ฅผ ๋๋ ์ ๋, ๋ฐ์ดํฐ๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ ๋ฌธ์
- ๋ณด์์์ ๊ฒฐํจ์ผ๋ก ์์ ํด์ผํ๋ ๊ฒฝ์ฐ
์์ธ
- ๋ธ๋ผ์ฐ์ ์์ ๊ด๋ฆฌํ๋ BF Cache(Back-Forward Cache)
- ์น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ํด๋น ํ์ด์ง์ css/html/javascript/image ๋ฑ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์บ์์ ์ ์ฅ
- ๋ค๋ก๊ฐ๊ธฐ / ์์ผ๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋ฒ์ ๋ค์ ์์ฒญํ์ง ์๊ณ ์บ์ ๋ฆฌ์์ค ํ์ฉํด์ ๋ก๋ฉ
- ๋ก๊ทธ์์ ์ดํ์๋ BF Cache๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ์ ๋ค์ ํ์ด์ง๊ฐ ๋ณด์ผ ์ ์์
ํด๊ฒฐ ๋ฐฉ๋ฒ(Fast API ๊ธฐ์ค)
- Jinja Template response ์ฌ์ฉ
- ๋ก๊ทธ์ธ ํด์ผ ์ด์ฉํ ์ ์๋ ํ์ด์ง์ ์ ์ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋ผ์ฐํฐ์์ access token ํ์ธ
- ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ์ ์ ํ์ฉ, ์๋ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ก redirection
- ํด๋ผ์ด์ธํธ์ reponse๋ฅผ ๋ณด๋ผ ๋ ๋ก๊ทธ์ธ ํด์ผํ๋ ํ์ด์ง์ BF Cache๋ฅผ ๋นํ์ฑํ
- response header์ ํฌํจ๋จ
@app.get("/")
def mainPage(request: Request):
if "access_token" in request.cookies:
token = utils.get_token(request.cookies.get("access_token"))
auth = utils.get_current_user(token)
data = ...
return templates.TemplateResponse(
"main.html",
context={"request": request, "data": data},
headers={
"Cache-Control": "no-cache, no-store, must-revalidate",
"Pragma": "no-cache",
"Expires": "Sat, 6 May 1995 12:00:00 GMT",
},
)
else:
return RedirectResponse(url="/login")
728x90