如何让 2 个用户同时登录 Laravel 应用程序

Posted

技术标签:

【中文标题】如何让 2 个用户同时登录 Laravel 应用程序【英文标题】:How can I have 2 users logged in at the same time in a Laravel App 【发布时间】:2018-09-20 14:23:02 【问题描述】:

请帮助我在 Laravel 中构建以下案例:

Laravel 应用程序的每个实例(例如公司)都有一个可以控制子用户的用户名(超级用户)。超级用户将登录一次应用程序,以允许子用户全天多次登录和退出。没有超级用户登录,子用户根本无法访问应用程序。

示例:经理每天登录一次的 POS 系统。它不会全天自行注销。收银员只需输入密码即可获得访问权限,并在 5 分钟后自动注销。商店里只有一个系统,所以收银员必须不断地打开和关闭。如果经理不登录,收银员根本无法使用POS。

我是 Laravel 的新手。我知道我需要多个警卫,但我如何访问身份验证,这样它就不会一直将我引导到超级用户?我正在考虑为超级用户使用默认的 laravel 身份验证。但是其他用户呢?

非常感谢任何正确方向的帮助或指示! 谢谢!

【问题讨论】:

【参考方案1】:

Laravel 不能同时保存多个经过身份验证的用户,但对于这个系统,你不一定需要它,事实上,没有它你可以设计一个更健壮的系统。

定义问题(而不是解决方案)时,我们会说“系统必须允许经理为收银员启用和禁用 POS,以便他们只有在获得授权时才能访问它”。

可以使用单个 Laravel 身份验证系统构建实现该目标的系统,使用不同的角色(managercashier)和相关权限。这(幸运的是)在 Laravel 中非常简单。

用户流程如下:

    收银员访问 POS 终端 收银员点击“登录” 收银员输入他们的身份信息 系统找到用户,识别出他们是收银员,然后检查收银员是否被允许登录 如果是,则收银员已登录并能够访问 POS 功能 如果否,则收银员登录被拒绝并出现错误

经理流程大致如下:

    经理访问 POS 终端 经理点击“登录” 经理输入他们的身份信息 系统接受他们的登录并将他们发送到管理仪表板

管理仪表板是经理可以控制其他用户(创建和管理收银员(编辑、删除、审核))并将系统状态设置为收银员激活的地方,这将受到policies 的保护。

在业务开始时,经理将登录到 POS 并通过将“活动”标志设置为 true 来为收银员激活它,然后经理将注销。一整天,任何收银员都可以登录并使用它。在一天结束时,经理将登录并停用收银员的 POS。

此系统的另一个好处是您可以让经理成为收银员,因此如果他们需要在白天使用 POS,他们就不需要单独的帐户。用户管理器状态可以是一个简单的is_manager 数据库列。您还可以实现程序化预定的 POS 可用性,即:“允许在上午 9 点到下午 5 点之间从收银员登录”。

Laravel 是这个项目的绝佳选择,因为它开箱即用地提供了您所需的一切,如果您对您的实施有任何其他问题,请告诉我 :-)

【讨论】:

以上是关于如何让 2 个用户同时登录 Laravel 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 消费者和提供者应用架构

同时认证带来的Laravel 5.8会话混乱

在 Laravel Auth() 中通过电子邮件/电话号码登录

Laravel --进阶篇 (单用户登录)

如何在 laravel 5.2 后同时获取电子邮件和密码

windows server 2012 如何设置远程登录同时多用户登录