我在网络编程方面相对较新。我编写了一个小型 C++ 服务器来生成 HTML 页面。如果我理解正确的话,fastcgi方法如下:
| Site1
| +------------+ +--------------+ +-------------+
|--|Apache/nginx|---|fastcgi socket|---|My C++ server|
| +------------+ +--------------+ +-------------+
........................................................
| Site2
+-----------------+ | +------------+ +--------------+ +-------------+
===|TCP from Internet|===|--|Apache/nginx|---|fastcgi socket|---|My C++ server|
+-----------------+ | +------------+ +--------------+ +-------------+
|
| <-firewall
我的理解如下,如有错误请指正
- 步骤是有人打开一个 Tcp/Http 套接字到一个众所周知的地址,例如。 http://www.example.com
- 防火墙的事情,所以一个背靠背的用户代理说,他是 example.com,并在网络服务器之间进行一些流量路由
- 防火墙打开另一个到 Web 服务器 (Apache/nginx) 的套接字,用于记录访问和其他内容。
- Web 服务器打开一个到我的 C++ 服务器的新套接字
- 我的 C++ 服务器获得了 fastcgi 套接字,我接受该连接,然后开始轮询该连接上的 i/o 事件
- 当数据到达该 fastcgi 连接时,我会读取它并将内容解析为 HTTP header 和 HTTP 负载
所以我的问题是如何对用户进行身份验证或换句话说识别用户?那么1个连接就是1个用户是真的吗?我应该在处理登录/注销状态的每个连接上启动状态机吗?因此,当接受新连接时,状态为“注销”,我发回注册表单,当我获得用户/传递连接状态步骤为“登录”时,服务器发送个性化内容。
我的 C++ 服务器基于 server1 - a c++ network server/client framework
最佳答案
你的问题需要书本上的答案。
5 和 6 是正确的,但网络服务器将处理所有这些。
你确实应该专注于一个可实现的小目标。让我们从 fastcgi 身份验证开始。使用“身份验证 Cookie”进行搜索,这应该可以让您开始回答部分问题。
关于c++ - 如何使用 C++ 实现 fastcgi 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760557/