workerman发送401状态码要求登录

elihe999

小弟刚刚开始学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();
3010 1 0
1个回答

blogdaren

根据你描述的场景,这和普通的WEB开发中的用户认证逻辑没有什么区别,然一般不采用也不推荐依据HTTP协议状态码来处理业务逻辑,普遍做法是进行类似用户名和密码的 token 鉴权, 客户端请求过来的时候,带上相应的鉴权数据,workerman服务端进行相应的鉴权认证,如果不OK,发送相应的业务错误码给客户端,客户端据此处理业务逻辑【比如客户端是浏览器的话弹个窗啥的】,反之认证OK。

  • elihe999 2018-08-06

    谢谢,主要是这边是一个嵌入式设备,用户名密码是按配置选项设定的,就是个路由器一样输入栏写入用户名。想升级时用workerman搭的http服务器获取文件,请求的字段抓包抓不到,估计要问一下这边的开发是怎么填这个字段。

年代过于久远,无法发表回答
🔝