Аутентификация cookie в Apache

Вероятно, Вы отстаете на попытке получить и проверить обратный DNS соединяющегося хоста. Можно протестировать это путем включения skip_name_resolve в my.cnf сервера, [mysqld] раздел.

Если это на самом деле имеет место (продемонстрированный тем параметром, устраняющим задержку), то можно решить проблему любой установкой DNS правильно (вперед и реверс) для клиента, или путем выполнения с skip_name_resolve все время (что означает, Вы не можете использовать имена хостов в Вашем GRANT таблицы).

4
задан 4 September 2009 в 23:00
1 ответ

Конечно. Я делаю то же самое.

Когда пользователь входит в систему, я даю им cookie и создаю маркер в /t/tokenid, и помещенный это в cookie: S=tokenid;PATH=/

Затем я могу использовать RewriteCond проверять на существование файла:

RewriteEngine on
# check for no cookie being set
RewriteCond %{HTTP:Cookie} !S=([a-zA-Z0-9]+)
RewriteRule ^/*protected/ /login.html [L,R]
# check for an invalid cookie being set
RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteCond /t/%1 !-f
RewriteRule ^/*protected/ /login.html [L,R]

Наконец, сборщик "мусора" периодически работает и удаляет старые маркеры:

find /t -type f \! -atime +1 -delete

Чтобы заставить atime автоматически обновить, я имею /t смонтированный без noatime, и у меня есть он доступный для сети (но не индексированный) и часть ссылок таблицы стилей /loggedin.txt который переписывается как:

RewriteCond %{HTTP:Cookie} S=([a-zA-Z0-9]+)
RewriteRule ^/*loggedin\.txt$ /t/%1 [L]
4
ответ дан 3 December 2019 в 03:37
  • 1
    I' m не уверенный, если это универсально, но библиотека Ruby CGI, кодирует " = " как " %3D" таким образом, мой RewriteCond похож на это: % RewriteCond {HTTP:Cookie} S%3D ([a-zA-Z0-9] +) –  user19084 6 October 2009 в 00:15

Теги

Похожие вопросы