2009-06-16 3 views
2

У меня работает приложение на базе PHP. Пользователь входит в систему и выполняет некоторые действия. У меня есть обратный прокси, настроенный для пересылки только определенных запросов, которые обрабатываются сервером mochiweb - например. любой URL-адрес запроса с mysite.com/mochiweb направляется на сервер mochiweb.Обработка сеансов пользователя с помощью Mochiweb

Теперь, мой вопрос: как я могу аутентифицировать этот запрос, используя информацию о сеансе, переданную PHP? Я хочу, чтобы только пользователи, которые вошли в систему через внешний интерфейс PHP, имели доступ к услугам веб-сервера mochiweb. Любые отклоненные запросы напрямую не должны обслуживаться.

ответ

1

Возможно, сервер erlang отправил HTTP-запрос с указанным сеансовым файлом на php-сервер и вернул сервер php, если сеанс действителен или нет. например, вот как я проверил сайт через recaptcha

-module(ed_recaptcha). 

-license("GPL3"). 

-export([verify/4]). 

-define(RECAPTCHA_URL, "http://api-verify.recaptcha.net/verify"). 

verify(Private_Key, Remote_Ip, Challenge, Response) -> 
    Body = list_to_binary(
      io_lib:format(
       "privatekey=~s&challenge=~s&response=~s&remoteip=~s", 
       [Private_Key, Challenge, Response, Remote_Ip])), 
    case http:request(post, {?RECAPTCHA_URL, 
          [], "application/x-www-form-urlencoded", 
          Body}, 
         [{timeout, 30000}, {sync, false}], 
         []) of 
     {ok, {_Status_line, _Headers, Response_Body}} -> 
      verify_response(Response_Body) 
    end. 

verify_response("false\nincorrect-captcha-sol") -> 
    {error, robot}; 
verify_response("false\ninvalid-request-cookie") -> 
    {error, robot}; 
verify_response("true\nsuccess") -> 
    {ok, not_robot}. 
Смежные вопросы