国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何驗證用戶的身份

yu123456

websocket服務(wù)器跟業(yè)務(wù)服務(wù)器分開部署 不需要登錄就能聊天 如何防止偽造身份
我的思路如下 但是不知道對不對 大家?guī)兔纯?br /> 當(dāng)用戶第一次訪問業(yè)務(wù)服務(wù)器的時候 根據(jù)session隨機(jī)生成一個用戶名 然后生成一個token 將用戶名跟token的關(guān)系保存到數(shù)據(jù)庫
然后把用戶名以及token發(fā)給用戶的瀏覽器 然后瀏覽器帶上用戶名以及token 訪問websocket服務(wù)器的登錄接口
websocket服務(wù)器根據(jù)用戶名去數(shù)據(jù)庫查找token 如果跟傳過來token的一致 就允許登錄然后把用戶信息保存到websocket服務(wù)器的session里面 這樣用戶以后每次發(fā)消息的時候直接讀取websocket里面的用戶名 就知道這個消息是誰發(fā)過來的

5671 4 0
4個回答

yu123456

最后一句補充下 這樣用戶以后每次發(fā)消息的時候直接讀取websocket服務(wù)器的session里的用戶名 就知道這個消息是誰發(fā)過來的

  • 暫無評論
yu123456

補充說明 經(jīng)過我驗證GatewayWorker不支持session 那么只能在登錄的時候綁定clientid跟用戶名的關(guān)系
下次發(fā)消息的時候根據(jù)clientid來查找出用戶名 由此來得的是誰發(fā)的消息

  • 暫無評論
yu123456

在次補充 上面說的有問題 希望對相關(guān)人員有幫助 測試發(fā)現(xiàn)GatewayWorker 支持session 的 但是跟傳統(tǒng)的session不一樣 例如下面的例子

if(empty($_SESSION)){
   $_SESSION=123;
   file_put_contents('/home/wwwroot/default/test.txt',123,FILE_APPEND);
}

每次刷新瀏覽器后都會重新生成 (傳統(tǒng)瀏覽器session刷新是不會重新生成的) 但是不刷新的這段時間內(nèi) 里面的值是一直存在的 所以可以通過他來判斷用戶是否登錄過 這個session說白了就是一個所有用戶都能訪問的全局?jǐn)?shù)組

  • 暫無評論
xiuwang

是的,GatewayWorker支持SESSION,不過是自己的一套機(jī)制,GatewayWorker手冊有詳細(xì)介紹。

如何驗證身份,我的做法是web(我用的是tp)登錄的時候,向redis存一個數(shù)據(jù),可以就是session_id,value是用戶信息。
瀏覽器連接上GatewayWorker后發(fā)送login請求(請求里包含session_id),GatewayWorker(Events.php的onMessage)收到login請求,提取session_id去redis查用戶是誰,然后利用Gateway::bind($client_id, $uid);接口綁定,設(shè)置下session,$_SESSION=xxx。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??