Войдите в систему через 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']
Другие вопросы по тегам