【发布时间】:2022-08-03 15:34:43
【问题描述】:
现在在我的系统中,我有一个 javascript 函数,当您想要执行需要身份验证的操作时,您可以调用然后使用 .then() 或 .catch(),javascript 函数在端点上执行一个 ajax 请求,检查用户是否有一个访问 cookie:
Javascript:
let OAuthManager = {
endpoints: {
refresh: {
\'url\':\'{{ url_for(\"refresh_access_token\") }}\',
\'type\':\'GET\'
}
}
};
OAuthManager.refresh = function(perform_async) {
return $.ajax({
url: OAuthManager.endpoints.refresh.url,
type: OAuthManager.endpoints.refresh.type,
async: perform_async ? false : true,
})
}
快速API:
@router.get(\"/token/refresh\")
async def refresh_access_token(request: Request, refresh_token=Cookie(None), access_token=Cookie(None)):
\"\"\"
The refresh endpoint should go to the cognito endpoint and exchange the refresh_token cookie for a new
access token.
\"\"\"
if access_token:
return JSONResponse({\"detail\": \"Access token already set.\"})
token_response = await self.get_new_access_token(refresh_token)
if token_response:
response = JSONResponse({\"detail\": \"New access token set.\"})
response.set_cookie(
key=\"access_token\",
value=token_response.access_token,
expires=token_response.expires_in,
httponly=True,
)
return response
raise HTTPException(detail=\"Could not refresh access token\", status_code=status.HTTP_401_UNAUTHORIZED)
但是我不想总是检查端点来查看我是否有访问令牌,以减少请求的数量。
是否可以检查是否已在 javascript 中设置了仅 HTTP cookie,或者如果设置了 cookie,我是否需要创建另一个具有与令牌相同的到期日期的非 http-only cookie?
-
你不能跳过身份验证请求吗?服务器是否会发回“未授权”之类的内容并在客户端采取相应措施?
标签: javascript cookies