laravel - 阻止用户查看其他用户正在查看的内容的最佳方法?

标签 laravel websocket redis user-permissions

因此,我正在开发一个应用程序,其中订单进入队列,然后由一组用户处理该队列。我不希望 2 个用户能够同时查看相同的订单,因为这显然会导致一些问题。我正在做一些研究,但从未真正做过这样的事情,所以我希望得到一些已经构建了类似东西的人以及你实现它的方式的意见。目前我正在考虑在我的 Laravel 服务器上实现 Redis 缓存。

额外信息

  • 使用 Laravel 后端和 Vue 3 前端
  • 需要查看数据(谁查看什么)才能在页面重新加载时加载
  • 需要能够将观看数据的实时更新推送给活跃用户(我目前正在使用推送器将事件推送给前端用户)

如果您需要更多信息,我非常乐意在评论中回答或澄清任何内容。

最佳答案

这可能有点模糊,但我们的票务系统应用程序中有类似的东西。我们所做的是为正在查看的特定票证设置“锁定”标志。因此,数据库中的每个票证都有两列,分别称为 lock_status 和locked_by。当用户点击打开按钮时,它会自动设置lock_status=1和locked_by=(用户ID)。 其次,我们使用ajax函数不断检查票证是否被锁定。该函数每 30 秒运行一次。如果lock_status = 1并且locked_by不等于正在查看票证的用户ID,我们只需重定向他并显示一条消息,表明该票证当前正在由用户查看:(用户ID和电子邮件)。您可以修改要求以满足您的需要。听起来您不需要显示谁正在查看它。只需重定向他即可。 您可以使用 setInterval() 方法安排 ajax 调用。一个例子: how to schedule ajax calls every N seconds?

关于laravel - 阻止用户查看其他用户正在查看的内容的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72521950/

相关文章:

python - 检查 redis get key 是否可用,否则 python 脚本

redis - 如何在编辑器上运行 redis?

laravel - undefined variable : errors in Laravel

mysql - 在 laravel 中如何在 group by 之前进行排序?

haskell - Haskell 中 websocket 的 "real server"是什么?

java - springboot缓存自动刷新redis和apache ignite

使用 GitHub 将 Laravel 部署到 azure windows web 应用程序会出现错误需要 ext-fileinfo * -> 它在您的系统中丢失

migration - 在 Laravel 中为现有 InnoDB 关系设置 Eloquent 关系

ssl - 让 wss 使用 stunnel & ratchet

javascript - socket.io 发射三次