【问题标题】:How to limit number of simultaneous sessions per user account in Laravel 4如何在 Laravel 4 中限制每个用户帐户的同时会话数
【发布时间】:2014-04-02 15:28:24
【问题描述】:

我正在开发一个基于订阅的项目,并且帐户需要每个用户限制为 2 个并发会话

我有一些想法,但不完全确定如何做到这一点,也许有一些我不知道的内置方法。

欢迎提出任何建议。

我在想,如果我将会话驱动程序切换到数据库,然后扩展 Auth 或会话驱动程序以在会话表中存储一些额外的信息,例如用户 ID,这会有点容易去做。

虽然不完全确定如何执行此操作,但我们将不胜感激任何帮助!

【问题讨论】:

    标签: php session laravel laravel-4


    【解决方案1】:

    我认为您是在谈论来自不同 IP/设备的多重登录?这就是我现在的想法。你不能指望“浏览器标签”或类似的东西......

    因此,如果您遇到这种情况,您的解决方案就非常简单。将任何用户登录绑定到数据库或其他持久性中的活动记录。

    数据库模型:

    userSession (
        'id', // primary key
        'userId', //foreign key
        'sid', //unique session id
        'ip', //unique user id or uniqure device (I preffer IP!)
        'login', //datetime
        'lastClick' //datetime
    );
    

    如果 db 中存在该用户的活动记录,则打开活动会话。您需要检查任何用户操作的给定数据库用户记录(我认为是 HTTP 请求)。您现在可以计算一个用户的活动用户会话。您现在也可以通过删除依赖的 userSession 记录来踢用户。

    【讨论】:

    • 期待一个利用 laravel 内置功能的解决方案
    • 给代码,拿代码? =) 它是一个解决方案,它不依赖于 lavarel。它是一个网络事物,干杯。
    • @lin 我在这样的事情上需要一些帮助,你认为你能帮助我吗?我的意思是有想法,我们可以使用聊天吗?谢谢。
    【解决方案2】:

    这可以通过 sql 使用表中的 UPDATE 并将列设置为活动会话和 php 检查会话是否超过 2、是否拒绝登录或其他方式来实现。

    <?php
    function checkSessions(){
    mysql_connect(data);
    $q = "SELECT * FROM users WHERE username=$username && password=$password";
     while($row = mysql_fetch_array($q)){
     if($row["Active Sessions"] >2){
     die("There are too many people using the account right now");
    }
    

    你知道这是一个样本。

    【讨论】:

    • 期待一个利用 laravel 内置功能的解决方案
    猜你喜欢
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2021-09-16
    • 2018-10-06
    • 2011-06-24
    • 2018-09-12
    • 2015-08-11
    相关资源
    最近更新 更多