javascript
fguillot json rpc_Hyperf 框架创建 JSON-rpc 服务
我們創(chuàng)建一個User服務(wù)供其他服務(wù)調(diào)用以實現(xiàn)認(rèn)證和鑒權(quán)。
checkToken 方法接收兩個參數(shù),一個token,一個permission,首先驗證token獲得user,對user的鑒權(quán)將在以后的權(quán)限認(rèn)證教程補充。
如果認(rèn)證成功,將返回user.
在配置文件server.php增加一個json-rpc服務(wù),監(jiān)聽端口為9504[
'name' => 'jsonrpc-http',
'type' => Server::SERVER_HTTP,
'host' => '0.0.0.0',
'port' => 9504,
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
SwooleEvent::ON_REQUEST => [Hyperf\JsonRpc\HttpServer::class, 'onRequest'],
],
],
post 請求{"jsonrpc":"2.0","method":"/user/checkToken","params":["eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1ZGNhM2RjZjE2NDQzIiwiaWF0IjoxNTczNTM1MTgzLCJuYmYiOjE1NzM1MzUxODMsImV4cCI6MTU3MzU0MjM4MywidXNlcl9pZCI6MX0.s0_ADx2399sIajxHW_-LnQY7ftbVhH1qEFbRT60qNYA",[]],"id":"1"}
正確返回{
"jsonrpc": "2.0",
"id": "1",
"result": {
"user_id": 1,
"username": "admin",
"nick_name": "超級管理員",
"real_name": "超級管理員",
"sex": 0,
"phone": "",
"avatar": "",
"last_login_at": null,
"created_at": "2019-11-04 15:16:18",
"status": 1
}
}
錯誤返回{
"jsonrpc": "2.0",
"id": "1",
"error": {
"code": -32000,
"message": "Token未驗證通過",
"data": {
"class": "Phper666\\JwtAuth\\Exception\\TokenValidException",
"message": "Token未驗證通過"
}
}
}
這里可能有人會有疑問,這個服務(wù)是公開的,是不是誰都可以調(diào)用,答案肯定是否定的,我們的服務(wù)將部署在Docker私有網(wǎng)絡(luò),外部是無法訪問到的,這個后面會講到。
總結(jié)
以上是生活随笔為你收集整理的fguillot json rpc_Hyperf 框架创建 JSON-rpc 服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微服务集成cas_Spring Clou
- 下一篇: gc的原因 频繁full_系统缓慢+CP