O driver do Laravel 5.6 Passport não funciona no socket.io e oferece uma exceção não autorizada
O código abaixo estava funcionando perfeitamente quando o driver era api. Então eu criei um novo projeto e mudei o driver para passaporte.
Agora, estou sempre recebendo o erro: não autorizado. Posso confirmar que o cabeçalho da solicitação possui código de token de autorização no navegador.Verifique a imagem abaixo clicando nela e clique no zoom para ver a imagem com melhor qualidade.
Estou faltando alguma coisa no código abaixo? Entre em contato se precisar de mais informações.
bootstrap.js
import Echo from 'laravel-echo'
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
auth: {
headers: {
Authorization: 'Bearer' + localStorage.getItem("token")
}
}
});
Código para postar a mensagem usando o socket.io da Web
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
});
Quando a última linha do código é executada (axios.post
), fornece 403,Exceção não autorizada.
Posso confirmar que o token está presente no cabeçalho.
Atualização - 1
Eu tenho dois projetos de amostra. Um com driver = api e outro com driver = passaporte. Quando estou usando o driver: api, não há problema. A questão acima é apenas com driver = passaporte.