c++ - 猫鼬网络库:如何获得经过身份验证的用户?
问题描述
我正在使用 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 标头的 Authorization 字段中提取用户信息。如果您想根据自己的应用程序定制示例,维基百科有一个标准请求字段列表:
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
例如,“转发”字段提供了识别客户端原始 IP 地址的信息。“授权”字段以易于恢复的格式包含用户名和密码,因此请记住,HTTPS 提供了额外的安全层,而普通 HTTP 存在潜在漏洞。
推荐阅读
- php - 如何使用 Laravel Excel 将 Excel 导入数据库
- ios - 在 IOS 中,弹出窗口在尝试使用 firebase 身份验证时关闭(signInWithPopup 方法)
- javascript - 滚动时固定并覆盖着陆图像
- python - Python pandas - read_sql > 如何从 pandas 中删除列名
- java - 库的 pom 文件中的依赖项,而不是作为父项目中的临时依赖项出现
- sql - 查找存在于一个表中而不存在于另一个表中的行
- snowflake-cloud-data-platform - 如何为不存在的记录分配 0 值
- laravel - Laravel 页面在 namecheap 主机上过期 419 错误
- sql - 为什么 Oracle Left Join 在应该有值的地方返回 null
- wordpress - Wordpress登录刷新问题,已经尝试了一切,但它不想加载