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

标签 c++ apache authentication networking webserver

我在网络编程方面相对较新。我编写了一个小型 C++ 服务器来生成 HTML 页面。如果我理解正确的话,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,并在网络服务器之间进行一些流量路由
  3. 防火墙打开另一个到 Web 服务器 (Apache/nginx) 的套接字,用于记录访问和其他内容。
  4. Web 服务器打开一个到我的 C++ 服务器的新套接字
  5. 我的 C++ 服务器获得了 fastcgi 套接字,我接受该连接,然后开始轮询该连接上的 i/o 事件
  6. 当数据到达该 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/

相关文章:

c++ - 防止触摸输入在 Windows 上移动鼠标光标

c++ - std::priority_queue 包含我自己的类

php - my.cnf mysql phpmyadmin

php - Laravel 中的单 session 登录

go - 登录请求后的 POST 请求,仍然请求权限

authentication - 登录失败 : unknown user name or bad password

c++ - 如何设置单个静态控件c++的文本和背景颜色?

c++ - 如果您从终端终止程序,打开的 ofstream 对象会发生什么?

javascript - Access-Control-Allow-Origin header 存在,但浏览器拒绝 XMLHttpRequest

python - 如果在 Windows 上导入 python 包,Apache 将无法工作