Динамическое AuthName в конфигурации Apache2
Я пытаюсь настроить Apache v2.4.7 для поиска в базе данных, если пользователь может получить доступ к определенному местоположению. Мне удается сделать это для нескольких конкретных мест, но не удается сделать это для динамических мест.
Так что это то, что работает для двух мест: "mydomain.com/foo" и "mydomain.com/bar"
<Location /foo>
AuthName "/foo"
AuthType Digest
Require valid-user
AuthBasicProvider dbd
AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
</Location>
<Location /bar>
AuthName "/bar"
AuthType Digest
Require valid-user
AuthBasicProvider dbd
AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
</Location>
Это работает нормально, если в моей базе данных есть запись для областей "/ foo" или "/ bar".
Но теперь, скажем, у меня их тысяча, и некоторые могут быть созданы в любое время. Я попробовал следующее решение:
<LocationMatch /.*>
AuthName "%{DOCUMENT_URI}"
AuthType Digest
Require valid-user
AuthBasicProvider dbd
AuthDBDUserRealmQuery "SELECT password FROM Users WHERE login = '%s' AND realm = '%s'"
</LocationMatch>
Я прочитал ( https://httpd.apache.org/docs/trunk/fr/mod/mod_authn_core.html), что AuthName
может быть динамически установлен, но я продолжаю получать следующее сообщение в журнале ошибок, что означает, что переменная не заменяется динамически фактическим запрошенным местоположением.
user `firstname.lastname' in realm `%{DOCUMENT_URI}' not found:
Буду признателен за помощь, чтобы выяснить, что я делаю не так, или найти другой способ.
1 ответ
Функция, которую вы ожидаете, появится в Apache 2.5, но еще не доступна в Apache 2.4. В Apache <=2.4 вы можете использовать только простую строку для AuthName.