使用 Mochiweb 处理用户会话

发布于 2024-07-24 22:25:42 字数 246 浏览 5 评论 0原文

我正在运行一个基于 PHP 的应用程序。 用户登录并执行一些操作。 我设置了一个反向代理来单独转发某些请求,由 mochiweb 服务器处理 - 例如,任何带有 mysite.com/mochiweb 的请求 URL 都会路由到 mochiweb 服务器。

现在,我的问题是如何使用 PHP 发出的会话信息来验证此请求? 我希望只有通过 PHP 前端登录的用户才能访问 mochiweb 网络服务器的服务。 任何直接的杂散请求都不应得到满足。

I have a PHP based application running. The user logins, and does some actions. I have a reverse proxy set up to forward certain requests alone to be handled by the mochiweb server - e.g. any request URL with mysite.com/mochiweb gets routed to the mochiweb server.

Now, my question is how do I authenticate this request using the session information handed out by PHP? I want only the users who have logged in via the PHP front end to be able to access the services of the mochiweb webserver. Any stray requests directly should not be served.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

草莓味的萝莉 2024-07-31 22:25:42

您可以让 erlang 服务器向 php 服务器发送带有所述会话 cookie 的 http 请求,并让 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}. 

you could have the erlang server send an http request with said session cookie to the php server and have the php server return if session is valid or not.
for example here is how i verified site via 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}. 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文