문제

PHP 기반 응용 프로그램이 실행 중입니다. 사용자가 로그인하고 몇 가지 작업을 수행합니다. Mochiweb 서버가 처리 할 특정 요청 만 전달하기 위해 리버스 프록시가 설정되어 있습니다.

이제 내 질문은 PHP가 나눠주는 세션 정보를 사용 하여이 요청을 어떻게 인증 하는가? PHP 프론트 엔드를 통해 로그인 한 사용자 만 Mochiweb Webserver의 서비스에 액세스 할 수 있기를 원합니다. 길 잃은 요청은 직접 제공되지 않아야합니다.

도움이 되었습니까?

해결책

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}. 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top