Я надеялся пройти аутентификацию на своем веб-сайте Google App Engine (GAE), сделав страницу «только для членов». Я надеялся сопоставить электронные письма / идентификаторы участников в таблице Google SQL с данными, вводимыми во всплывающем окне HTTP-аутентификации, но у меня возникли трудности. Ниже приводится общий план моего PHP:
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="Please enter your email in the username box and member ID in the password box"');
header('HTTP/1.0 401 Unauthorized');
echo 'Login credentials required for this Premium Content page.';}
else {
//Verify that the user has the proper credentials
}
Похоже, SERVER [‘PHP_AUTH_USER’] никогда не устанавливается, что указывает на то, что PHP работает в режиме CGI. Как мне сделать так, чтобы это работало в Google App Engine? Есть и другие места, в которых приведены указания о том, как заставить HTTP-аутентификацию работать в режиме CGI (см. Здесь http://www.besthostratings.com/articles/http-auth-php-cgi.html), но все они ссылаются на файл .htaccess, который я не думаю, что GAE использует (вместо этого он использует файл .yaml). Я мог просто сделать страницу аутентификации, но надеялся, что смогу аутентифицироваться с помощью менее уязвимых средств.
Да, вам нужно написать страницу аутентификации, которая сверяет имя пользователя и пароль с вашей таблицей SQL. Если они совпадают, то вы можете установить SERVER['PHP_AUTH_USER']
переменная сеанса. Не забудьте включить страницу выхода, которая сбрасывает эту переменную.
Других решений пока нет …