Laravel 5.6 Passport驱动程序不在socket.io中工作,并提供未经授权的例外

时间:2018-03-02 19:21:07

标签: vue.js laravel-5.5 laravel-5.6

当驱动程序是api时,下面的代码工作正常。然后我创建了一个新项目并将驱动程序更改为护照。

现在,我总是收到错误:未经授权。我可以确认请求标头在浏览器中有授权令牌代码。 请点击下面的图片,然后点击缩放以查看质量更好的图片。

enter image description here

我在下面的代码中遗漏了什么吗?如果您需要更多信息,请与我们联系。

bootstrap.js

<select>

使用Web socket.io

发布消息的代码
import Echo from 'laravel-echo'
window.Echo = new Echo({
   broadcaster: 'socket.io',
   host: window.location.hostname + ':6001',
   auth: {
       headers: {
           Authorization: 'Bearer' + localStorage.getItem("token")
       }
   }
});

当最后一行代码运行(var config = { headers : { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem('token') } }; var request = { "channel": "private-Send-Message-Channel." + message.Sent_To, "name": "MessengerEvent", "data": { "msg": message }, "socket_id": socketId }; var url = "http://localhost:6001/apps/786d1c1c820025f4/events?auth_key=be1699f0101880f673fdff7ff203334f"; axios.post(url, JSON.stringify(request), this.config).then(response => { //success callback }); )时,它会给出403,未经授权的异常

我可以确认标头中是否存在令牌。

更新 - 1

我有两个示例项目。一个用driver = api,另一个用driver = passport。当我使用驱动程序:api时,没有问题。上述问题仅适用于driver = passport。

1 个答案:

答案 0 :(得分:-1)

您是否遵守了护照文件:https://laravel.com/docs/5.6/passport

为了获得OAuth身份验证,除了不记名令牌之外,您还需要更多身体参数。

 {
        "grant_type":"password",
        "client_id":"CLIENT_ID",
        "client_secret":"YOUR_SECRET",
        "username":"USERNAME",
        "password":"PASSWORD",
        "scope":""
    }