laravel 私有通道和 laravel-echo-server 的身份验证问题

2024-02-16

我在 Laravel 5.5 中使用 laravel-echo-server 以及 Redis 和 vuejs 通过 websockets 广播事件。通过公共渠道,它工作正常,并且事件可以正确广播到客户端。但是当我将其更改为私有通道时,即使channel.php文件中的回调函数只返回true并且不包含任何身份验证逻辑,我也会面临身份验证问题。 我正在使用 Sentinel 身份验证包,我不知道这是否是问题所在。但正如我所说,当仅返回“true”时,身份验证问题仍然存在。

当我检查 laravel-echo-server 时,我看到一条错误消息,显示“无法进行身份验证,获取 http 代码 419”。

我读到有些人面临同样的问题,他们得到的可能是 csrf 令牌问题或私人频道仅适用于集成身份验证包...等等。

我已将 csrf-token 标头包含在 window.Echo 配置中,但没有结果。

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001',
auth: {
headers: {
'X-CSRF-TOKEN': $('meta[name=csrf-token]).attr(content)
}
}
});

路线/channel.php

<?php

Broadcast::channel('adminNotify', function() {
    return true;
});

为了让 id 为 1 的管理员能够接收事件,我实际上做了这样的事情:

<?php

use Cartalyst\Sentinel\Laravel\Facades\Sentinel;

Broadcast::channel('adminNotify', function () {
    return (int) Sentinel::check()->id === 1;
});

应用程序\事件\NotifyAdminEvent

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use App\Ad;
use Sentinel;

class NotifyAdminEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $ad;

    public function __construct(Ad $ad)
    {
        $this->ad = $ad;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('adminNotify');
    }
}

app.js

require('./bootstrap');
window.Vue = require('vue');

import Echo from 'laravel-echo';

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
});

laravel-echo-server.json

{
    "authHost": "http://192.168.10.11",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
        {
            "appId": "64fe4c095b0ffb30",
            "key": "9e2bf37f9b3c8c88c3c5f5e207754f1d"
        }
    ],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}

Laravel log 不记录任何内容,因此我发现很难知道发生了什么并解决问题。


我已经弄清楚发生了什么。问题出在laravel-echo-server.json文件并恰好在第一行“授权主机”哪里而不是把ip我不得不把域名.

{
    "authHost": "http://webdev-app.test",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
        {
            "appId": "64fe4c095b0ffb30",
            "key": "9e2bf37f9b3c8c88c3c5f5e207754f1d"
        }
    ],
    "database": "redis",
    "databaseConfig": {
        "redis": {},
        "sqlite": {
            "databasePath": "/database/laravel-echo-server.sqlite"
        }
    },
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "http",
    "socketio": {},
    "sslCertPath": "",
    "sslKeyPath": "",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "apiOriginAllow": {
        "allowCors": false,
        "allowOrigin": "",
        "allowMethods": "",
        "allowHeaders": ""
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

laravel 私有通道和 laravel-echo-server 的身份验证问题 的相关文章

  • 仅针对 Laravel 中的生产添加自定义 500 错误页面

    我想要一个自定义 500 错误页面 这可以简单地通过创建一个视图来完成errors 500 blade php 这对于生产模式来说很好 但在调试模式下我不再获得默认的异常 调试页面 看起来是灰色的 并显示 哎呀出了问题 因此 我的问题是 如
  • Vue.js 更改 {{ }} 标签

    我想改变 something by 在 Vue js 中 我怎样才能实现这一点 这可能吗 我在 AngularJS 中寻找的等效项 var app angular module app function interpolateProvide
  • Vue js - 在同一级别的两个组件内传递数据

    我有需要从一个传递的数据component1到另一个component2 我不使用vuex or router 组件树 Parent Component1 Component2 从一开始component1我发出 ajax 请求 检索信息并
  • memcache、redis 和 ehcache 作为分布式缓存框架的比较 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要做出的决定之一是在我的系统中使用什么缓存框架 有这么多可供选择 我目前正在研究 redis ehcache 和 memcached
  • 具有匹配模式的 ioredis 密钥

    我想用键匹配模式 LOGIN 搜索 Redis 数据库 我在我的应用程序中使用 ioredis 昨天我搜索了整个网络 我得到了一些执行这项工作的选项 如下所示 KEYS 扫描流 Issue import Redis from ioredis
  • Vuetify 自动完成类似项目未显示

    我的本地案例中有类似标题的自定义帖子API我尝试通过搜索查询显示帖子items array Data count 5 entries id 3 title Senior developer Python id 4 title Senior
  • 如何使用 HTML5 与 UDP 套接字通信?

    我拥有的 正在运行的 C 应用程序服务器 准备将数据发送到应该发送到 HTML5 页面或应用程序的客户端 我想要的是 考虑到 c 服务器和 HTML5 应用程序都是系统本地的 有没有办法使用 udp 端口 与 HTML5 进行通信 我知道的
  • Laravel 5 - 更改默认日志位置,将日志文件移至应用程序之外

    如何更改默认日志文件位置
  • 如何以编程方式启动 Vuetify 对话框并等待响应

    我对 Vue js 和 Vuetify 相当陌生 使用 AngularJS 好几年了 但我们公司正在转向 Vue js 我想要完成的是 当用户单击 登录 按钮时 它会执行一些检查 即用户名不能为空 并启动 Vuetify 对话框来提醒用户
  • 从组件传递数据

    我对 Vue 相当陌生 我正在尝试将数据从组件传递到视图 我不确定我是否在使用props正确的 我有一个对话框 当我保存时 我想将数据插入数据库 我也想重复使用addCustomer function 这就是为什么我没有将该函数放置在组件中
  • Microsoft.Extensions.Caching.Redis 选择与 db0 不同的数据库

    一个关于了解使用哪个redis数据库以及如何配置它的问题 我有一个默认值ASP NET Core Web 应用程序和默认配置的本地redis服务器 含15个数据库 通过包管理控制台我已经安装了 Install Package Microso
  • 如何销毁角度工厂实例

    一方面 我有几个工厂 每个工厂都控制一个 websocket 另一方面 其中一个工厂应该在客户端登录时启动 因此 if user isLogged injector get NotificationsWebsocket 这就是我动态初始化工
  • 在 Vue.js 中隐藏 div onclick

    以下 jQuery 的 Vue js 等价物是什么 btn click function hideMe hide jQuery 开箱即用 而 Vue js 则不然 要初始化 Vue js 组件或应用程序 您必须将该组件及其数据绑定到模板内的
  • VueJS 中数据无法正确显示

    我的 VueJS 代码有一个小问题 在 输出 压缩的 GS1 数字链接 URI 部分中 When there is no result it should have nothing display like this I have remo
  • Laravel 5 中的自定义验证器

    我正在将 Laravel 应用程序从 4 升级到 5 但是 我有一个自定义验证器 但无法运行 在L4中 我做了一个验证器 php文件并将其包含在全局 php using require app path validators php 我尝试
  • 错误:[vuex] 期望 string 作为类型,但发现未定义

    学习Vuex 我写了一个简单的登录页面示例项目 https github com vuejs vuex tree dev examples shopping cart和document https vuex vuejs org zh gui
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • 为什么 websocket 需要使用 HTTP 进行打开握手?为什么不能成为一个独立的协议呢?

    Websocket 的设计方式是 通过使其握手成为有效的 HTTP 升级请求 其服务器可以与 HTTP 服务器共享端口 我对这个设计理念存有疑问 无论如何 WebSocket 协议都是一个独立的基于 TCP 的协议 为什么我们需要这个 HT
  • 在重复内容区域添加

    我有一个菜单组件 简单地说 它接受一个带有一系列选项的道具 并为每个选项在菜单中呈现一个项目 我希望能够根据用例自定义每个菜单项内的标记 因此我在菜单项元素内使用了占位符 你可以在这个中看到一个例子fiddle https jsfiddle
  • 如何在生产模式下为 Chrome 扩展启用 Vue 开发工具?

    我正在构建一个 chrome 扩展 并使用 vue cli webpack 配置 我希望能够在运行后使用 vue devtoolsnpm 运行构建命令 我尝试添加Vue config devtools true 在 main js 中 或者

随机推荐

  • Odoo - 使用 colspan 或可能是 col 进行视图定制

    我正在使用 odoo 10 e 早些时候我问了一个问题 我们如何合并两个或多个标头以针对多个字段显示一个标头合并 one2many 中的两个字段标题 https stackoverflow com questions 45377060 od
  • 如何在 Visual Studio 代码上删除 git 存储库(laravel 项目)

    我有一个致力于 git 的小型 Laravel 项目 然后我通过手动成功删除了远程存储库 设置 gt 删除此存储库 它工作正常 但是一旦我尝试在 vs code 上创建新的存储库 然后我就得到了 git init Reinitialized
  • 使用 android.accounts 身份验证器时出现问题

    我是 android accounts api 的新手 现在我试图用它们做一些事情 但出现了一个看似虚拟的问题 我已经为我的应用程序创建了一个身份验证器 但尚未实现抽象方法 它的图标成功出现在系统 添加帐户 窗口中 我知道当我单击它时 将调
  • 关于 pthread_cond_signal 和 pthread_cond_wait

    我有以下问题pthread cond 信号 and pthread cond wait 例如 在下面的代码中 根据我的理解 当增量计数 calls pthread cond 信号 计数 125 in 观看次数只能在之后执行计数互斥体已解锁于
  • 二分查找计算平方根 (Java)

    我需要帮助编写一个程序 该程序使用二分搜索递归计算输入非负整数的平方根 向下舍入到最接近的整数 这是我到目前为止所拥有的 import java util Scanner public class Sqrt public static vo
  • xcode 4.2 位置模拟器和时区

    我在运行时注意到 xcode 模拟器中有一个漂亮的设置 我可以更改当前位置 从而模拟基于位置的测试 但是 当我尝试使用 NSDateFormatter 获取日期时 当地日期仍处于太平洋标准时间 我在太平洋时区 NSDateFormatter
  • 如何在 ios 中的联系人表视图中实现搜索栏 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我在 viewdidload 中有以下代码 totalstring NSMutableArray alloc initWithObje
  • 比较 R 中的时间

    我有两列 例如 A 和 B 时间格式为 HH MM A B 00 00 06 00 str A 和 str B 给出 字符 我想做一个比较 例如 Comment lt ifelse hour part A lt hour part B De
  • Asp.Net System.Web.Routing 不会路由 URL,除非最后有 .aspx

    我的路由有一个奇怪的问题 我有一个现有网站 我正在尝试将其添加到其中 它有效 但前提是 aspx 位于 URL 末尾 如果我删除 aspx 则会出现错误 找不到资源 我创建了一个快速测试网站并将代码复制到其中 它工作得很好 两者之间的代码是
  • Photoshop 文本工具在文本开头添加标点符号[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在使用 Photoshop 时遇到了一个奇怪的问题 当我使用文字工具时 我可以正常键入字母 但是当我键入任何标点符号时 它会添加到文本的
  • PG::ConnectionBad:致命:用户“用户名”错误的对等身份验证失败

    当我尝试使用 User connection 或 generic table connection 连接到我的 pg 数据库时 出现此错误 PG ConnectionBad 致命 用户 用户名 的对等身份验证失败 我仔细检查了我的datab
  • 我应该如何将 redux 与不会重用的嵌套子组件一起使用?

    我正在开发一个具有许多子组件的组件 其中一些子组件嵌套了五层 我对使用 redux 感兴趣 因为它的优点是在公共状态原子中拥有单一的事实来源 我不明白的是智能 愚蠢组件的推荐 并将提供者置于主要组件之上 并通过道具传递所有内容 如果我这样做
  • gae 样板文档

    在为 App Engine 寻找一个好的社交登录包时 我尝试了 gae boilerplate 但我发现除了自述文件之外没有任何文档 我认为这根本不够 我有很多问题 其中包括 样板文件应该用作库还是根据需要下载并修改 样板应该如何更新 每个
  • Python yaml:ModuleNotFoundError

    我在 conda 中创建了一个新环境并在那里安装了 yaml conda list grep yaml yaml 0 1 7 had09818 2 但我无法导入它 python c import yaml Traceback most re
  • 如何构建微服务前端

    Let s say I have a dozen microservices I am wondering where should the front end go Let s say front end is HTML Javascri
  • 迭代时修改 Java8 流中的对象

    在 Java8 流中 我可以修改 更新其中的对象吗 例如 List
  • 如何纠正错误“从创建它的线程以外的线程访问”?

    下面的代码给了我下面的错误 我想我需要 InvokeRequired 但我不明白我该如何使用 跨线程操作无效 从创建它的线程以外的线程访问控制 listBox1 代码 using System Collections Generic usi
  • Eclipse 中不同的断点图标有何含义?

    在 Eclipse 中使用断点时 我有时会注意到它们有不同的图标 注释 左侧栏上的标记 有时它只是一个蓝色的球 有时上面有一个复选标记 有时它是十字形的 所有这些注释是什么意思 蓝色球 常规断点 活动 可能设置了命中计数 空球 即白色 断点
  • 使用 QuickCheck 测试一元法则

    是否有用于测试的库或工具laws https wiki haskell org Monad laws自定义 monad 的 我目前的黑客尝试是这样的 Define Arbitrary1 如同Eq1 Show1 etc 定义一个包装的辅助类型
  • laravel 私有通道和 laravel-echo-server 的身份验证问题

    我在 Laravel 5 5 中使用 laravel echo server 以及 Redis 和 vuejs 通过 websockets 广播事件 通过公共渠道 它工作正常 并且事件可以正确广播到客户端 但是当我将其更改为私有通道时 即使