如何在Laravel中的一个频道中验证多个警卫?

时间:2018-01-09 18:54:51

标签: php laravel jwt real-time pusher

我正在使用 JWT person-api 工作人员在Laravel中构建实时应用程序并使用自定义警卫工作人员的-api 。它们代表不同的模型,而不是具有角色的模型。

可以请求某个作业工作人员可以接受该作业。我为每个模型设置了一个专用表,作业工作人员之间的中间表,其中 person_id worker_id 。当请求作业时, worker_id 列将设置为null,直到工作人员接受它为止。

请求作业时,会在名为Jobs的私人频道中触发并广播一个事件。我可以通过检查事件中作业的 person_id 来授权该频道中的人员。此时,任何工作人员都可以使用该作业,直到有人接受该作业,然后只有工作人员才能执行该作业作业< /强>

我的问题是,如何在同一个频道中使用两个不同的警卫实现多重身份验证,其中授权方法可能因作业的状态而异?

例如:

  • 当请求作业时,我可以使用作业的person_id授权,但是worker_id为null,因此它对所有工作人员开放
  • 工作人员接受此作业时,人员的授权保持不变,但现在只有工作人员授权才能获得授权在频道
  • 工作人员删除该作业时,它再次可用于任何工作人员

这是我的频道广播路线中的代码:

Broadcast::channel('job.{job}', function ($user, \App\Job $job) {
    // authorization condition goes here
});

$user可能是工作人员,并且授权条件可能会根据同一频道中作业的事件而发生变化。< / p>

编辑:我的问题被标记为此question可能重复,我不同意。我不仅仅是在谈论使用JWT验证用户,这已经实现了。我所说的是在同一个广播频道中使用不同的警卫认证多个用户,并根据用户类型和作业状态更改授权条件。

0 个答案:

没有答案