我正在创建一个简单的身份验证系统,并且在以下位置有一个简单的游戏项目:https://github.com/ericg-vue-questions/authentication
我正在使用的主要技术是:
我通过doing拨打axios:
axios
.get('http://127.0.0.1:8000/api/login', {
params: {
username: username,
password: password
},
withCredentials: true
})
.then((response) => {
console.log('Logged in')
console.log(response)
})
.catch(err => { console.log(err) })
在后端,设置Cookie的code是:
@app.get("/api/login", tags=["api"], operation_id = "login" )
async def login( username: str, password: str, response: Response ):
authenticated = False
if username in users:
if users[ username ][ 'password' ] == password:
authenticated = True
response.set_cookie( key="user", value=str( users[ username ][ 'id' ] ), max_age = 60 * 60 * 24 )
return authenticated
我可以确认在浏览器中正在发送和接收cookie,但是由于某种原因它没有被存储。我以为,唯一需要做的就是设置withCredentials:在axios get请求中为true,但这似乎不起作用。知道我做错了什么吗?
我的响应标题为:
HTTP/1.1 200 OK
date: Sun, 15 Dec 2019 01:54:14 GMT
server: uvicorn
content-length: 4
content-type: application/json
set-cookie: user=userid; Max-Age=86400; Path=/
access-control-allow-credentials: true
access-control-allow-origin: http://localhost:8080
vary: Origin
答案 0 :(得分:0)
我非常确定这是因为您没有设置cookie的路径,例如“ /”。那是集合中的第四个参数。如果您在https连接中使用cookie,则还应该设置一个域。