【问题标题】:Laravel - Limit a routegroup to one user at a time?Laravel - 一次将路由组限制为一个用户?
【发布时间】:2017-11-10 19:33:44
【问题描述】:

我正在寻找一种方法来将组内的所有路由一次限制为一个用户。在实践中,这转化为一个管理员控制面板,一次只有一个管理员可以使用。任何号码都可以在任何给定点登录到网络应用程序,但如果一个人进入控制面板,它应该锁定其他人,直到他返回常规客户端网站。

我正在运行 laravel 5.2.9

【问题讨论】:

  • 重新考虑您的解决方案。这是一种错误的保护方式。你为什么要做这样的限制?
  • 似乎数据库标志将是一个解决方案。不过,我还没有考虑过可能由此产生的问题。但我认为如果管理员拒绝注销,那么其他人将永远无法登录。
  • 这是对 webapp 的限制。如果没有必要,我不会这样做。至于数据库解决方案,我想到了这一点,但我遇到了同样的限制。也许给实际会话一个非常短的超时时间,因此如果管理员没有在一个页面上注销/空闲,它将允许新来的人,隐喻地“接受”会话。

标签: php laravel session laravel-5


【解决方案1】:

如果您在离开管理面板后要求并强制所有用户退出

那么就这么简单了:

  • 登录后在数据库中添加一个标志
  • 然后在 Route::group 中添加一个中间件,当标志存在时不允许其他人
  • 注销后,删除标志

【讨论】:

    【解决方案2】:

    一旦你想让所有用户都登录系统,那么限制会话超时不是解决办法。

    你可以这样做:

    1. 每次用户访问管理页面时,将最后一个用户和访问时间戳存储到 larval Cache 或 DB
    2. 在允许用户进入管理页面之前,检查存储的用户及其从 Cache/DB 的最后访问权限。如果没有存储数据(首次访问)或数据已过期(用户最后一次访问后的最大空闲时间)或者是同一用户,则让他进入。
    3. 这样,如果当前管理员处于空闲状态而其他人访问了该页面,则当前管理员将在其下一步操作时被重定向到正常区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2021-04-03
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多