小弟刚刚开始学php和workerman,想一点一点熟悉其用法,今天想练习发送头域,发400没问题了。现在想做一个一访问workerman就发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();
根据你描述的场景,这和普通的WEB开发中的用户认证逻辑没有什么区别,然一般不采用也不推荐依据HTTP协议状态码来处理业务逻辑,普遍做法是进行类似用户名和密码的 token 鉴权, 客户端请求过来的时候,带上相应的鉴权数据,workerman服务端进行相应的鉴权认证,如果不OK,发送相应的业务错误码给客户端,客户端据此处理业务逻辑【比如客户端是浏览器的话弹个窗啥的】,反之认证OK。
谢谢,主要是这边是一个嵌入式设备,用户名密码是按配置选项设定的,就是个路由器一样输入栏写入用户名。想升级时用workerman搭的http服务器获取文件,请求的字段抓包抓不到,估计要问一下这边的开发是怎么填这个字段。