Yii2 Rest Authentication Bearer Post数据丢失

时间:2018-04-09 15:55:33

标签: rest authentication post yii2 bearer-token

我正在开发REST API。因此,我准备了一个函数,它通过curl将身份验证数据发送到REST服务器。我已经实现了两个身份验证选项。第一种是基本身份验证,第二种是通过令牌(Bearer)进行身份验证。

现在,我处于故障状态,因为在REST服务器上,在通过令牌进行身份验证的情况下,REST服务器不会收到POST数据。身份验证本身正在运行,但POST数据将丢失。在通过Basis Authentication进行身份验证的情况下,REST服务器将接收POST数据,没问题。

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    async def listener(websocket, path):
        async for message in websocket:
            self.onMessage.emit(message)

    self._server=websockets.serve(listener, 'localhost', 8765)
    asyncio.get_event_loop().run_until_complete(self._server)
    asyncio.get_event_loop().run_forever()

    print("Finished...")

此外,$ curl_post_data在调试时显示客户端的所有数据,之后将使用curl_exec($ curl)执行其余调用。

可能是什么问题?

2 个答案:

答案 0 :(得分:0)

经过好几个小时后,我发现了问题并解决了这个问题。

问题是:

onCreate()

使用'Content-Type:application / json'会导致丢失POST数据信息。

解决方法是:

更改

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization));

'Content-Type: application/json' 

答案 1 :(得分:0)

您可以将yii2的HttpBasicAuth身份验证器行为用于承载令牌身份验证。

use yii\filters\auth\HttpBasicAuth;

public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['authenticator'] = [
        'class' => HttpBasicAuth::className(),
    ];
    return $behaviors;
}

Authentication

对于您建议的解决方案,应使用json请求解析器。

'request' => [
  'parsers' => [
    'application/json' => 'yii\web\JsonParser',
  ]
]

JsonParser