Войдите в систему через htpasswd через CURL и сохраните сеанс в браузере
У меня есть несколько папок (по одной для каждого клиента), и я сохраняю в них изображения, которые могут быть приняты только им самими.
Папки защищены с помощью 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);
Я попытался также установить curl_setopt для COOKIEJAR и COOKIEFILE без каких-либо других результатов. Я не знаю, если у меня неправильный подход или я пропускаю какой-то код.
2 ответа
Наконец-то я смог решить это. Хотя это не очень безопасный метод, это хорошее решение для моей проблемы.
Благодаря Аберелю я начал исследовать куки-файлы и http-аутентификацию. После этого я могу установить cookie с PHP (или с JS, различий нет) и проверить его с помощью.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 вы идентифицируете каждого пользователя.
Спасибо за помощь
Вы можете использовать $_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']