如何使用C ++实现fastcgi身份验证?

时间:2013-02-07 20:39:45

标签: c++ apache authentication networking webserver

我在网络编程方面相对较新。我写了一个生成HTML页面的小型C ++服务器。如果我理解正确,fastcgi方法如下:

                         |                    Site1
                         |  +------------+   +--------------+   +-------------+
                         |--|Apache/nginx|---|fastcgi socket|---|My C++ server|
                         |  +------------+   +--------------+   +-------------+
                       ........................................................
                         |                    Site2                             
   +-----------------+   |  +------------+   +--------------+   +-------------+
===|TCP from Internet|===|--|Apache/nginx|---|fastcgi socket|---|My C++ server|
   +-----------------+   |  +------------+   +--------------+   +-------------+
                         |
                         | <-firewall

我的理解如下,如果我错了请纠正我

  1. 步骤是有人打开Tcp / Http套接字到一个众所周知的地址,例如。 http://www.example.com
  2. 一个防火墙的东西,所以一个背对背的用户代理说,他是example.com并在Web服务器之间做一些流量路由
  3. 防火墙打开另一个插件到Web服务器(Apache / nginx),记录访问权限和其他内容..
  4. Web服务器打开到我的C ++服务器的新套接字
  5. 我的C ++服务器获得了fastcgi套接字,我接受了连接,并开始轮询该连接上的i / o事件
  6. 当数据到达fastcgi连接时,我读取它并将内容解析为HTTP头和HTTP有效负载
  7. 所以我的问题是如何进行身份验证或用其他词语识别用户?那1个连接是1个用户是真的吗?我应该在处理登录/注销状态的每个连接上启动状态机吗?因此,当接受新连接时,状态被“注销”,并且我发回注册表单,当我得到用户/通过连接状态步骤“登录”并且服务器发送个性化内容。

    我的C ++服务器基于server1 - a c++ network server/client framework

1 个答案:

答案 0 :(得分:2)

你的问题需要有值得回答的书籍。

5&amp; 6是正确的,但Web服务器将处理所有这些。

你真的应该专注于一个可实现的小目标。让我们从fastcgi身份验证开始。使用“身份验证Cookie”进行搜索,这可以帮助您了解答案的一部分。