我正在使用Cesanta猫鼬网络库来部署嵌入式服务器。
我使用摘要启用了http_auth。
我怎么知道该用户已登录?

最佳答案

您的问题有些含糊,因此,我假设您主要关心在整个会话中跟踪唯一用户,无论是通过IP地址,通过身份验证凭据还是通过其他方式。

查看mg_http_server.h的API参考

https://cesanta.com/docs/http/api-server.html

具体来说,我认为您正在寻找功能“ mg_http_parse_header2”。您应该可以使用此功能来解析所需字段的HTTP响应标头。

为“ mg_http_parse_header2”提供的代码示例几乎正是您所要求的:

char user_buf[20];
char user = user_buf;
struct mg_str hdr = mg_get_http_header(hm, "Authorization");
mg_http_parse_header2(hdr, "username", &user, sizeof(user_buf));
// ... do something useful with user
if (user != user_buf) {
  free(user);
}


他们的示例显示了如何从HTTP标头中的“授权”字段中提取用户信息。如果您想根据自己的应用程序定制示例,则Wikipedia会列出标准请求字段:

https://en.wikipedia.org/wiki/List_of_HTTP_header_fields

例如,“转发”字段提供信息以标识客户端的原始IP地址。 “授权”字段以易于恢复的格式包含用户名和密码,因此请记住,HTTPS提供了额外的安全性,而普通HTTP则存在潜在的漏洞。

10-05 20:49
查看更多