swoole websocket 使用 passport 无法获取当前用户问题
借助使用
https://github.com/swooletw/laravel-swoole
启用sebsocket。
为什么使用jwt 可以? 而passport 不行?
很简答,jwt可使用url?token= you token
方式即可获取用户信息,但passport 不行
ps: 目前我也没找到如何有效的设置socket.io
header
SO, 机智的我想到在获取用户信息中间件之前使用url?token= you token
设置request
header,轻松解决这个问题。
laravel-swoole
文档中在配置文件设置中间件( docs -> )
'middleware' => [
// 这里加入你的中间件
App\Http\Middleware\SetBearerToRequestHeader::class,
SwooleTW\Http\Websocket\Middleware\DecryptCookies::class,
SwooleTW\Http\Websocket\Middleware\StartSession::class,
SwooleTW\Http\Websocket\Middleware\Authenticate::class,
],
class SetBearerToRequestHeader
{
public function handle($request, Closure $next)
{
$request->headers->set('Authorization', 'Bearer ' . $request->get('token'));
return $next($request);
}
}
不到位的地方大神们多多指教!
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: