Closed jipfqf closed 3 years ago
/**
* 获取当前登录的用户
* 此特性要求建立WebSocket连接的路径要经过Authenticate之类的中间件。
* 例如:
* 浏览器端:var ws = new WebSocket("ws://127.0.0.1:5200/ws");
* 那么Laravel中/ws路由就需要加上类似Authenticate的中间件。
* Route::get('/ws', function () {
* // 响应状态码200的任意内容
* return 'websocket';
* })->middleware(['auth']);
*/
// 在onOpen()中获取用户登录信息
// $user = Auth::user();
// $userId = $user ? $user->id : 0; // 0 表示未登录的访客用户
/** * 获取当前登录的用户 * 此特性要求建立WebSocket连接的路径要经过Authenticate之类的中间件。 * 例如: * 浏览器端:var ws = new WebSocket("ws://127.0.0.1:5200/ws"); * 那么Laravel中/ws路由就需要加上类似Authenticate的中间件。 * Route::get('/ws', function () { * // 响应状态码200的任意内容 * return 'websocket'; * })->middleware(['auth']); */ // 在onOpen()中获取用户登录信息 // $user = Auth::user(); // $userId = $user ? $user->id : 0; // 0 表示未登录的访客用户
这些我都设置了,也都是按文档上设置了,还是获取不到,连接websocket的时候不知道怎么传token,我看文档上也没说要传token,现在就不知道是不是我哪配置的不对,用的laravel7和vue前后端完全分离的结构,不知道这个有没有影响
前后端分离这种情况,你需要检查建立WebSocket
的连接是否带上了SESSION
的Cookie
;如果是跨域,需要设置withCredentials
才能带上Cookie
。
确实是没有带cookie,但是我查了很久好像没有查到要怎么带cookie,withCredentials也都是ajax上才有的,laravels后端需要设置什么吗
带不带跨域Cookie
是前端withCredentials
控制,后端无需设置。
我查了下websocket连接时都没有传withCredentials的选项啊,全是ajax,websocket要怎么设置
我用的是laravel7,前端用的vue-native-websocket,在web和api路由里面加文档上说的ws路由且加了中间件都不能获取到用户信息,其它配置也都是默认配置,谁能帮我指点下要怎么配置路由,还是其它地方哪需要配置