Mongoose网络库:如何获取身份验证的用户

mongoose networking library: how to get authenticated user?

本文关键字:获取 身份验证 用户 网络 何获取 Mongoose      更新时间:2023-10-16

我正在使用cesanta mongoose网络库来部署嵌入式服务器。我使用摘要启用了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则具有潜在的漏洞。