Cookie在Workerman中怎么获取,好像试了很多方法都不能获取

盛盛夺人

想问问大神,Cookie在Workerman中怎么获取,好像试了很多方法都不能获取。或者提供一个可以验证登录的方法也行

3158 4 0
4个回答

盛盛夺人

自问自答:https://segmentfault.com/q/1010000008010925?_ea=1529407
这个是不能使用的。
首先你要搞清楚
cookie和session的原理。cookie和session都是需要通过http协议请求头来创建的,也就是说需要浏览器发起创建。设置cookie也会涉及到域那些,所以在cli下是不能使用

  • 暂无评论
盛盛夺人

自问自答:(自己想)
直接onconnect(这里正如手册上面说的,基本用不了onconnect)后,发送服务端登录信息,如:
{'type':'login','token':'123456789456123456789'}然后让服务端在onmessage上验证用户登录信息。

  • 暂无评论
blogdaren

我认为 “那篇segmentfault参考” 说法欠妥:

  1. cookie和session确实是针对http协议的,这个没毛病。
  2. 客户端onConnect后发送登录鉴权信息,然后服务端onMessage进行鉴权,也是一种权限认证方法,这个也没毛病。
  3. 至于说CLI模式不能使用cookie,我认为这个说法欠妥,理由是:
    (1) 首先websocket协议在握手阶段是基于http协议的,那么就意味着是可以设置cookie的。
    (2) 浏览器显然支持cookie,因为浏览器支持http协议和websocket协议;但是基于workerman开发的websocket client也同样可以使用cookie 【只不过这个cookie的实现不是很正统】,比如基于官方的ws协议实现支持cookie的websocket客户端【两端均工作于CLI模式】:
    //客户端
    $ws_client->onConnect = function($connection){
    $connection->wsHttpHeader = array(
        'Cookie' => 'k1=v1',
    );
    }; //服务端
    $ws_worker->onConnect = function($connection){
    $connection->onWebSocketConnect = function($connection , $http_header){
        print_r($_COOKIE);                           
    };  
    };
  • 暂无评论
q13113671764

基于token 验证,就是把用户信息加密成token返回前端,然后前端提交token给你验证,你接收到了把token解密

  • 暂无评论
年代过于久远,无法发表回答
🔝