小弟剛剛開始學php和workerman,想一點一點熟悉其用法,今天想練習發(fā)送頭域,發(fā)400沒問題了?,F(xiàn)在想做一個一訪問workerman就發(fā)401讓瀏覽器彈出自帶打登錄框。怎么樣才能獲得用戶名和密碼然后做下一步操作???
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Workerman\Worker;
use Workerman\Protocols\Http;
$ws_worker = new Worker("http://0.0.0.0:2346");
$ws_worker->count = 4;
$ws_worker->onMessage = function($connection, $data)
{
// Send hello $data
Http::header("WWW-Authenticate:Basic realm=\"111\"");
Http::header('HTTP/1.1 401 Unauthorized');
$connection->send("", true);
return;
};
Worker::runAll();
根據(jù)你描述的場景,這和普通的WEB開發(fā)中的用戶認證邏輯沒有什么區(qū)別,然一般不采用也不推薦依據(jù)HTTP協(xié)議狀態(tài)碼來處理業(yè)務邏輯,普遍做法是進行類似用戶名和密碼的 token 鑒權, 客戶端請求過來的時候,帶上相應的鑒權數(shù)據(jù),workerman服務端進行相應的鑒權認證,如果不OK,發(fā)送相應的業(yè)務錯誤碼給客戶端,客戶端據(jù)此處理業(yè)務邏輯【比如客戶端是瀏覽器的話彈個窗啥的】,反之認證OK。
謝謝,主要是這邊是一個嵌入式設備,用戶名密碼是按配置選項設定的,就是個路由器一樣輸入欄寫入用戶名。想升級時用workerman搭的http服務器獲取文件,請求的字段抓包抓不到,估計要問一下這邊的開發(fā)是怎么填這個字段。