GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — libhttpserver/examples/basic_authentication.cpp at master · etr/libhttpserver Expand file tree/ Copy pathbasic_authentication.cppMore file actions 64 lines (54 loc) · 2.41 KB / Copy pathbasic_authentication.cppFile metadata and controls64 lines (54 loc) · 2.41 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 /* This file is part of libhttpserver Copyright (C) 2011-2025 Sebastiano Merlino This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ // basic_authentication.cpp - per-request HTTP Basic auth check inside a // lambda handler. For centralized auth that intercepts every request, // see centralized_authentication.cpp. // // SECURITY NOTE: Credentials MUST NOT be hardcoded in source code (CWE-798). // This example loads BASIC_USER and BASIC_PASS from environment variables. // Never reflect the password in the response body. // // Usage: // export BASIC_USER=myuser BASIC_PASS=mysecretpassword // ./basic_authentication // curl -u myuser:mysecretpassword http://localhost:8080/hello #include <cstdlib> #include <iostream> #include <string> #include <httpserver.hpp> int main() { const char* expected_user = std::getenv("BASIC_USER"); const char* expected_pass = std::getenv("BASIC_PASS"); if (!expected_user || !expected_pass) { std::cerr << "basic_authentication: BASIC_USER and BASIC_PASS " "environment variables must be set.\n"; return 1; } httpserver::webserver ws{httpserver::create_webserver(8080)}; ws.on_get("/hello", [expected_user, expected_pass] (const httpserver::http_request& req) { if (req.get_user() != expected_user || req.get_pass() != expected_pass) { return httpserver::http_response::unauthorized( } // Only echo the username — never reflect the password back to the client. return httpserver::http_response::string( "Hello, " + std::string(req.get_user()) + "!"); }); ws.start(true); return 0; } |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |