gpt4 book ai didi

php - AWS Flask session 不会从 PHP 请求中持久化

转载 作者:行者123 更新时间:2023-12-03 17:38:51 27 4
gpt4 key购买 nike

我将 Flask 应用程序部署到 AWS lambda

@bp_google_routes.route('/is_authorized', methods=('POST', ))
def google_is_authorized():
data = json.loads(request.data)

flask.session['user_email'] = data['email']
authorized = aws_handler.already_authorized(data['email'])
return jsonify({'authorized': authorized})


@bp_google_routes.route('/authorize', methods=('GET', ))
def google_authorize():
if 'user_email' not in flask.session:
abort(404)

return 'All good'

我正在通过 PHP 后端访问应用程序以首先检查授权 is_authorized这是一个 POST请求并将存储 email在 session 中。

然后在我第二次调用 authorize 之后由于 session 中显然没有电子邮件,因此总是中止。但是应该从第一个请求开始:
<?php
$data = array("email" => "test@test.com");
$data_string = json_encode($data);
$aws_endpoint = "https://.../is_authorized";
$aws_endpoint_auth = "https://.../authorize";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $aws_endpoint);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json')
);

$response = curl_exec($ch);
$err = curl_error($ch);

curl_close ($ch);

if ($err) {
echo "There was an error accessing the requested information!";
} else {
$result = json_decode($response);
if (!$result->authorized) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $aws_endpoint_auth);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);

echo $result;
print_r('False');
} else {
print_r('True');
}
}
?>

为什么 session 在两个调用之间不持久?

最佳答案

你需要告诉curl使用 cookiejar 保存 cookie .

将下面的行添加到文件的顶部:

$cookieFileName = tempnam('/tmp','cookies.txt');


然后添加 curl_setopt在下面调用您的每个电话:

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFileName); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookieFileName);

这样,curl 将在请求之间存储和重用 cookie。

关于php - AWS Flask session 不会从 PHP 请求中持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com