通过 CURL 登录 htpasswd 并在浏览器中保持会话

Login htpasswd via CURL and keep the session in browser

我有几个文件夹(每个客户一个),我在其中保存只有他自己才能访问的图像。

文件夹通过 htpasswd 保护,我试图在用户正常登录后通过 cUrl 登录并保持此会话活动并允许用户导航和仅访问他的文件夹图像。

在我的身份验证控制器中,我这样做:

$username = 'username';
$password = 'password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'routeToOneFileInHisFolder');
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);    
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

我还尝试为 COOKIEJAR 和 COOKIEFILE 设置 curl_setopt,但结果没有不同。我不知道我是否采用了错误的方法,或者我是否遗漏了一些代码。

您可以使用 $_SESSION,即....

//put this in the top of your php
session_start();

//then store the user and password in the session...
$_SESSION['username'] = 'username';
$_SESSION['password'] = 'password';

// replace in your code anywhere the $username and $password variables 
// with the new $_SESSION['username'] and $_SESSION['password']

我终于可以解决这个问题了。虽然这不是一个非常安全的方法,但它是解决我的问题的好方法。

感谢 Aberel,我开始研究 cookie 和 http 身份验证。之后,我可以使用 PHP(或使用 JS,没有区别)设置 cookie,并使用每个文件夹中的 .htaccess 检查它。 .htaccess 看起来像这样:

AuthUserFile /path/.htpasswd
AuthName "Forbidden"
AuthType Basic
SetEnvIfNoCase Cookie COOKIENAME = randomHash $ PASS = 1

Require valid-user

#Allow valid-user
Order Deny, Allow
Deny from all
Allow from env = PASS
Satisfy any

COOKIENAME 可以是任何内容,而 randomHash 是您标识每个用户的。

感谢帮助