문제
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}.
제휴하지 않습니다 StackOverflow